如何防止文本模板生成器在每个 VS 版本上运行?



>我有一个包含多个项目的VS 2019解决方案。有一个项目是其他每个项目都依赖的,我在该项目中有一些 T4 模板。每次调用 Build 命令(无更改(时都会重新生成模板,因此也会重新生成所有依赖项目。

如何解决此问题,以便仅在必要时重新生成模板?我的项目文件具有以下内容:


<PropertyGroup>
<TransformOnBuild>true</TransformOnBuild>
<OverwriteReadOnlyOutputFiles>true</OverwriteReadOnlyOutputFiles>
<TransformOutOfDateOnly>true</TransformOutOfDateOnly>
</PropertyGroup>
<Import Project="$(VSToolsPath)TextTemplatingMicrosoft.TextTemplating.targets" />
<ItemGroup>
<None Update="MessagesMessages.tt">
<Generator>TextTemplatingFileGenerator</Generator>
<LastGenOutput>Messages.generated.cs</LastGenOutput>
</None>
<EmbeddedResource Update="MessagesMessages.de.resx" />
<EmbeddedResource Update="MessagesMessages.resx">
<Generator>PublicResXFileCodeGenerator</Generator>
<LastGenOutput>Messages.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
<Target Name="CallTransformOnBuild" BeforeTargets="CoreCompile">
<CallTarget Targets="TransformDuringBuild" />
</Target>

我只希望在以下情况下在构建上运行转换:

  • 消息.已生成.cs
  • 不存在
  • Messages.tt 已更改
  • 消息.resx 已更改

您需要确保以下 XML 标记设置为 false。

<TransformOnBuild>False</TransformOnBuild>
<OverwriteReadOnlyOutputFiles>False</OverwriteReadOnlyOutputFiles>

最新更新