如何在VS2010中指定一个用于转换文件的“自定义工具”?

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

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

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

这是我想解决的问题。 我正在通过应用XSLT来转换XML文件。 我在转换过程中使用扩展对象,如此处所述。

在这样做时,我已经将Visual Studio用作编辑和调试XSLT的工具。 我希望我可以编写一个简单的转换引擎,它允许我们像使用Visual Studio一样使用不使用扩展对象的XSLT文档。 我认为(希望)自定义工具属性是完成这项工作的关键。

TIA


自VS2005以来,支持使用扩展函数调试XSLT转换,并能够在XSLT代码和扩展函数代码中具有断点

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

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

备注

必须满足以下条件才能进入代码并调试样式表:

enableDebug参数设置为true。

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

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

  • 所述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();
    

    调试使用扩展对象的XSLT文件的解决方法是创建一个测试.exe文件项目(如控制台应用程序项目),并从该项目中调用XSLT(所有扩展对象均正确引用)。

    您可以设置断点,然后“启动调试”test.exe项目以进入XSLT文件。


    在2010年之前,“自定义工具”属性指定了在VS中注册的类的名称作为处理工具,该工具将获取项目项目的值并生成更多文件。 为此,您必须编写工具类,将其编译为程序集,并使用Visual Studio注册该程序集。 这个过程的一个例子可以在这里找到,但是请注意它不是专门针对VS 2010的,因此可能会中断 - 显然,自定义工具基于VS的COM对象模型。

    我不确定这个功能在VS 2010中有多好的支持。我没有看到在VS 2010 SDK中编写这些工具的任何(明显的)文档,而Visual Studio博客上的这篇文章似乎讨论了这个功能(在“自定义构建工具”)或类似的,但我从来没有见过它在我的VS 2010副本中描述的任何UI。

    在任何情况下,如果你只是想通过命令行来运行一些东西,那么最好是编辑.csproj的MSBuild来使用<Exec> task - 如果你想构建一个自定义工具,我的第一个环节应该至少让你开始。

    链接地址: http://www.djcxy.com/p/50101.html

    上一篇: How to specify a "Custom Tool" for transforming a file in VS2010?

    下一篇: Output formatted text (including source code) as LaTeX, PDF and HTML