我尝试过,也尝试过,但是如果不从磁盘加载样式表(通过将URI传递到XslCompiledTransform.Load()方法),我就无法成功地进入XslCompiledTransform.Load。
我完全知道,只有通过URI (如前所述)或通过实现XslCompiledTransform.Transform接口的XmlReader加载样式表,才能进入IXmlLineInfo ()方法。
我按如下方式加载了样式表:
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);上面的方法是不可能的,因为我不希望不断地阅读磁盘。
谢谢你的评论,我没有意识到微软做了这件事,我相信这将证明在将来对很有帮助。
然而,我想我并没有在我的问题上说得很清楚。我不是在研究load方法,而是想进入transform方法,这样我就可以看到xsl转换发生了什么。我强调load方法,因为您传入的参数决定了您是否能够调试转换方法(您必须传入实现IXmlLineInfo接口的IXmlLineInfo)。
虽然我可以使用您突出显示的技术进入转换方法,但我只是在逐步完成代码。虽然我可能会通过观察代码来计算转换的速度,但xsl调试器会逐行显示实际样式表的逐步通过(相对于执行转换每一行的代码)。
发布于 2009-01-16 17:57:45
最近,微软发布了.Net框架的符号和源代码,以便在这种情况下进行调试。设置需要几秒钟的时间,但是一旦完成了,无论如何构建XslCompiledTransform,您都应该能够进入Load方法。
这是太详细了,无法进入一个如此的答案,但这里有一个很好的博客文章关于这一主题。
http://codebetter.com/blogs/james.kovacs/archive/2008/01/17/debugging-into-the-net-framework-source.aspx
发布于 2009-06-10 13:47:53
在尝试使用XmlReader.Create(new StringReader(String))时,我也遇到了同样的问题。调试器似乎必须能够找到一个磁盘文件,以便调试工作,但这并不意味着不能使用StringReader或流版本的XmlReader.Create。试试这个版本:
XmlReader.Create(new StringReader(String), New XmlReaderSettings(), baseURI)在我的例子中,我使用一个文件资源来存储我的xslt字符串,所以我可以指向一个文件。实际上,您不需要给出调试器知道的绝对路径,以便在解决方案/属性/调试器源代码下指定的文件夹中搜索源代码。
XslCompiledTransform的文档具有误导性,因为它意味着所需要的只是一个支持IXmlLineInfo接口的XmlReader。
https://stackoverflow.com/questions/451348
复制相似问题