У меня есть решение 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 изменен