我已经尝试了很多次,但是我无法进入XslCompiledTransform,而不必从磁盘加载样式表(通过将URI传递到XslCompiledTransform.Load()方法中)。
我完全知道,如果您是通过URI从磁盘加载样式表(如上所述),或者是从实现IXmlLineInfo接口的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);
上面的方法是不可能的,因为我不希望不断地从磁盘读取和从磁盘读取数据。
感谢您的有用评论,我没有意识到微软已经做到了这一点,我相信这在将来会很有帮助。
但是,我想我并没有完全清楚自己的问题。我并没有考虑使用load方法,而是想使用transform方法,这样我就能看到xsl转换发生了什么。我强调了load方法,因为您传入的参数决定了您是否能够调试transform方法(您必须传入实现IXmlLineInfo接口的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/