构建时T4转换的产品仅在下一个构建中使用

16 c# msbuild t4 visual-studio

我有一个VS项目,其中包含:

  1. TextTransform在a template.tt上运行的预构建操作以生成generated.cs

  2. generated.cs 列为要编译的文件之一(即在项目文件列表中)

当我构建项目时,执行预构建操作,generated.cs重新创建,但VS编译以前的版本generated.cs(我猜它在构建过程开始时加载到内存中).

如何使构建使用新版本generated.cs(即在预构建操作中生成的版本)?如何强制构建订单?

请注意,文本转换输入是动态的,因此无法在设计时完成.

Spo*_*man 4

我认为您不需要自定义预构建操作。只需将“.tt”文件添加到您的项目中并将其“自定义工具”属性设置为“TextTemplateFileGenerator”即可。您可能想确保 *. generated.cs 文件也添加到项目中,但我认为 VS 会处理这个问题。

  • 这似乎对我不起作用。我认为 Zvika 是说他们希望 T4 模板在他的项目构建时发挥其魔力。这也是我想要的。不过,我将 T4MVC 与 ASP.NET MVC 3 一起使用。例如,如果我构建一个项目,添加一个应该由 T4MVC 拾取的新文件,然后再次构建该项目,我看不到变化这应该由 T4MVC 完成。我必须通过右键单击 .tt 文件并选择“运行自定义工具”来显式触发更新。 (6认同)