如何在VS2010中指定用于转换文件的"自定义工具"?

Mic*_*l J 7 xml xslt debugging visual-studio-2010

对于大多数文件类型(例如.cs,.xml,.xslt),VS2010中的"属性"窗口允许用户指定用于转换文件的自定义工具.作为参考,这是选择"自定义工具"字段时获得的工具提示.

指定在设计时转换文件的工具,并将该转换的输出放入另一个文件中.例如,数据集(.xsd)文件附带默认自定义工具.

我正在寻找有关如何设置和使用此属性的信息.

这是我想解决的问题.我正在通过应用XSLT转换和XML文件.描述我在转换过程中使用扩展对象这里.

在这样做的过程中,我使Visual Studio无法用作编辑和调试我的XSLT的工具.我希望我能编写一个简单的转换引擎,它允许我们使用Visual Studio,就像我们对不使用扩展对象的XSLT文档一样.我认为(希望)自定义工具属性是实现此功能的关键.

TIA

Dim*_*hev 2

自 VS2005 起,就支持使用扩展函数调试 XSLT 转换,并且能够在 XSLT 代码扩展函数代码中设置断点。

只需使用此 XslCompiledTransform 构造函数重载即可。

参数enableDebug 类型:System.Boolean true 生成调试信息;否则为假。将其设置为 true 使您可以使用 Microsoft Visual Studio 调试器调试样式表。

评论

必须满足以下条件才能单步执行代码并调试样式表:

enableDebug参数设置为 true。

  • 样式表Load 作为 URI 或实现该接口XmlReader的类的实现传递给该方法IXmlLineInfo 。该IXmlLineInfo接口在所有文本解析对象上实现 XmlReader

    换句话说,如果使用对象IXPathNavigable (例如XmlDocumentXPathDocumentXmlReader 或未实现IXmlLineInfo接口的实现来加载样式表,则无法调试样式表。

  • 用于XmlResolver加载样式表的是基于文件的 XmlResolver,例如 XmlUrlResolver(这是该类默认 XmlResolver使用的 XslCompiledTransform)。

  • 样式表位于本地计算机或 Intranet 上。

这是一个小代码示例

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

// Load the style sheet.
xslt.Load("output.xsl");

// Create the writer.
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent=true;
XmlWriter writer = XmlWriter.Create("output.xml", settings);

// Execute the transformation.
xslt.Transform("books.xml", writer);
writer.Close();
Run Code Online (Sandbox Code Playgroud)