gpt4 book ai didi

c# - C# 中的 XslCompiledTransform 调试

转载 作者:太空宇宙 更新时间:2023-11-03 11:55:55 24 4
gpt4 key购买 nike

我试了又试,但我无法在不从磁盘加载样式表(通过将 URI 传递到 XslCompiledTransform.Load() 方法)的情况下进入 XslCompiledTransform。

我完全清楚,如果您通过 URI(如前所述)从磁盘加载样式表,或者通过从实现 IXmlLineInfo 接口(interface)的 XmlReader 加载样式表,则只能进入 XslCompiledTransform.Transform() 方法。

我已经按如下方式加载了样式表:

XslCompiledTransform xslt = new XslCompiledTransform(true);
//grab string from textbox
XmlReader reader = XmlReader.Create(new StringReader(XsltBox.Text));

// Compile the style sheet.
xslt.Load(reader);

从我阅读的各种文献来看,这似乎是启用调试的方式。但是,当我尝试进入 XslCompiledTransform.Transform() 方法时,我收到消息:“当前位置没有可用的源代码”

如前所述,如果我执行以下操作,我可以进入转换:

string stylesheet = @"C:\PathToMy\Stylesheet.xsl";

// Enable XSLT debugging.
XslCompiledTransform xslt = new XslCompiledTransform(true);
//compile stylesheet
xslt.Load(stylesheet);

上述方法是不可能的,因为我不希望不断地读取和读取磁盘。


感谢您的有用评论,我没有意识到微软已经这样做了,我相信这将在未来证明非常有帮助。

但是,我想我的问题并没有完全清楚。我没有考虑进入加载方法,我想进入转换方法,这样我就可以看到 xsl 转换发生了什么。我强调了 load 方法,因为您传入的参数决定了您是否能够调试转换方法(您必须传入一个实现 IXmlLineInfo 接口(interface)的 XmlReader 才能这样做)。

虽然我可以使用您强调的技术单步执行转换方法,但我只是单步执行代码。尽管我可能通过观察代码找出转换过程中发生了什么,但 xsl 调试器逐行显示了实际样式表本身的单步执行(与执行转换的每一行的代码相反)

最佳答案

最近 Microsoft 发布了 .Net Framework 的符号和源代码,以允许在这种情况下进行调试。设置需要几秒钟的时间,但是完成后,无论您如何构建 XslCompiledTransform,您都应该能够进入 Load 方法。

它太详细了,无法给出 SO 答案,但这里有一篇关于该主题的优秀博客文章。

http://codebetter.com/blogs/james.kovacs/archive/2008/01/17/debugging-into-the-net-framework-source.aspx

关于c# - C# 中的 XslCompiledTransform 调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/451348/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com