我有一个从 xml 文件生成类的 T4 模板。
如何在 xml 文件和模板文件之间添加依赖关系,以便在修改 xml 文件时自动重新运行模板,而无需从上下文菜单中选择“运行自定义工具”?
我不相信 T4 支持基于外部依赖的自动模板转换。我同意 Marc - 如果您只有一个外部文件,您可以为您的 XML 文件创建一个自定义“自定义工具”,或者简单地使用ttxgen。但是,我认为这种方法无法扩展到 t4 模板依赖多个文件的情况。您可能需要创建一个 Visual Studio 包来处理它。
工具执行需要多长时间?一个懒惰的选择可能是简单地编辑 csproj 以便它始终在构建期间运行该工具(可能是通过<Exec ... />
或自定义targets
文件) - 当然,这取决于它是否能够快速执行。
另一种方法是编写一个在 VS 中用作“自定义工具”的 shim,并使用正确的 args 简单地调用现有的 exe(或其他)。不是微不足道的,而是可行的(见这里)——我相信这应该与变化检测相当好。它实际上在我为当前项目做的事情清单上,所以我很快就会发现......
您可以使用AutoTT Visual Studio 扩展。
此扩展允许配置将运行 T4 模板的触发器。
可能的触发因素之一是文件更改。在 AutoTT 页面的示例配置文件中,触发器的正则表达式匹配指定文件夹(Controllers、Content)中的所有文件,但您可以更改它以使其仅与特定文件一起运行。
Chirpy是执行此操作的另一种选择。还有T4 Regenerator,它以不同的方式进行。
您是否尝试过使用<#@ xsd?