对于大多数文件类型(例如.cs,.xml,.xslt),VS2010中的“属性”窗口允许指定用于转换文件的自定义工具。作为参考,这是选择“自定义工具”字段时获得的工具提示。
指定在设计时转换文件并放置文件的工具 输入的转换成 另一个文件。例如,数据集 (.xsd)文件附带默认值 自定义工具。
我正在寻找有关如何设置和使用此属性的信息。
以下是我要解决的问题。我正在通过应用XSLT转换和XML文件。我正在转换期间使用扩展对象,如here所述。
这样做我将Visual Studio作为编辑和调试我的XSLT的工具变得毫无用处。我希望我能编写一个简单的转换引擎,它允许我们使用Visual Studio,就像我们对不使用扩展对象的XSLT文档一样。我认为(希望)自定义工具属性是实现此功能的关键。
TIA
答案 0 :(得分:2)
自VS2005 以来,支持使用扩展函数调试XSLT转换,并且能够在XSLT代码和中使用扩展函数代码。
只需使用this XslCompiledTransform constructor重载。
参数 enableDebug 键入:System.Boolean 如果生成调试信息,则为true否则是假的。将此设置为true使您可以使用Microsoft Visual Studio调试器调试样式表。
为了进入代码并调试样式表,必须满足以下条件:
enableDebug
参数设置为true。
样式表传递给Load
方法既可以是URI,也可以是
XmlReader
类的实现
实现IXmlLineInfo
接口。 IXmlLineInfo
接口
在所有文本解析上实现
XmlReader
个对象。
换句话说,如果样式表是
使用IXPathNavigable
加载
对象,例如XmlDocument
或
XPathDocument
或XmlReader
实现没有
实现IXmlLineInfo
接口,
你无法调试样式表。
用于加载的XmlResolver
样式表是基于文件的
XmlResolver
,例如
XmlUrlResolver
(这是默认值
XmlResolver
使用的XslCompiledTransform
// 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();
类)。
样式表位于 本地机器或内联网。
这是一个小代码示例:
{{1}}
答案 1 :(得分:1)
调试使用扩展对象的XSLT文件的解决方法是创建测试.exe文件项目(例如控制台应用程序项目),并从该项目调用XSLT(正确引用所有扩展对象)。
您可以设置断点,然后“开始调试”测试.exe项目以进入XSLT文件。
答案 2 :(得分:1)
在2010年之前,“自定义工具”属性指定了在VS中注册的类的名称,作为处理工具,该工具将获取项目项的值并生成更多文件。为此,您必须编写工具类,将其编译为程序集,并使用Visual Studio注册该程序集。可以找到此过程的一个示例here,但请注意它并非专门用于VS 2010,因此可能会中断 - 自定义工具基于VS的COM对象模型apparently。
我不确定这个功能在VS 2010中的支持程度如何。我没有看到任何(明显的)关于在VS 2010 SDK和this post on the Visual Studio blog中编写这些工具的文档来讨论功能(在“自定义构建工具”下)或类似功能,但我从未见过它在我的VS 2010副本中描述的任何UI。
在任何情况下,如果您只是尝试通过命令行运行某些内容,那么最好只编辑.csproj的MSBuild以使用<Exec> task
- 如果您确实想要建立一个自定义工具,我希望第一个链接至少可以让你开始。