仅当 XML 发生更改时才从 XML 生成 C# 类
我在 C# 项目上有一个预构建事件,该项目运行 xsltproc 将一些 XML 转换为 C# 源文件。然后以正常方式构建生成的源。这意味着无论 XML 是否发生变化,项目总是会被构建。
有没有办法仅在 XML 发生更改时生成 C# 类?预构建事件是错误的方法吗?使用某种自定义工具将 XML 转换为 C# 会更好吗?
我使用的是 Visual Studio 2010。XML 不包含序列化对象。
非常感谢任何帮助。
I have a pre-build event on a C# project which runs xsltproc to transform some XML into C# source files. The generated source then gets built in the normal way. This means that the project always gets built regardless of whether the XML has changed.
Is there a way of only generating the C# classes if the XML has changed? Is a pre-build event the wrong approach? Would I be better off with a custom tool of some kind to turn the XML into C#?
I'm using Visual Studio 2010. The XML doesn't contain serialized objects.
Any help much appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
最后,我在 csproj 文件中添加了一个新的 ItemGroup,其中包含对每个 XML 文件的引用。我为每个项目指定了 Preprocess 元素名称:
稍后在项目文件中,我覆盖了 BeforeBuild 目标,以便它将每个 Preprocess 项目转换为与 XML 文件同名的 C# 源文件:
请注意 xsltproc 的参数必须是与 %22 一起逃脱。
现在,仅当 XML 发生更改时才会构建 C# 源文件。我从此论坛帖子中获得了该方法。
In the end I added a new ItemGroup to my csproj file with references to each XML file. I gave each item an element name of Preprocess:
Later in the project file I overrode the BeforeBuild target, so that it transforms every Preprocess item into a C# source file with the same name as the XML file:
Note the arguments to xsltproc have to be escaped with %22.
Now the C# source file is only built if the XML has changed. I got the approach from this forum post.