Как предотвратить запуск генератора текстовых шаблонов при каждой сборке VS? - PullRequest
1 голос
/ 16 июня 2020

У меня есть решение VS 2019 с несколькими проектами. Есть один проект, от которого зависит любой другой проект, и у меня есть несколько шаблонов T4 в этом проекте. Шаблоны регенерируются каждый раз, когда я вызываю команду Build (без изменений), и поэтому все зависимые проекты также перестраиваются.

Как я могу это исправить, чтобы шаблоны регенерировались только при необходимости? Мой файл проекта имеет следующее:


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

Я хочу, чтобы преобразование запускалось при сборке, только если:

  • Messages.Generated.cs не существует
  • Messages.tt изменен
  • Messages.resx изменен
...