Как заставить Visual Studio преобразовывать определенные шаблоны T4 при сборке? - PullRequest
0 голосов
/ 03 января 2019

Можно ли заставить Visual Studio создавать только определенный набор шаблонов T4 при сборке?

В настоящее время я использую предоставленное решение здесь , чтобы Visual Studio преобразовывал все моих файлов шаблонов T4 при сборке. Тем не менее, у меня есть шаблон T4, который сталкивается с этой проблемой , когда он преобразуется во время сборки. Поэтому я хочу преобразовать все шаблоны , за исключением этого конкретного.

В частности, в моем .csproj есть следующий код:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <TransformOnBuild>true</TransformOnBuild>
    <TransformOutOfDateOnly>false</TransformOutOfDateOnly>
    <OverwriteReadOnlyOutputFiles>true</OverwriteReadOnlyOutputFiles>
</PropertyGroup>

который "работает", чтобы перестроить большинство моих шаблонов T4 так, как я хочу.

Однако у меня есть шаблон T4, включенный в этот .csproj, который использует переменную Host таким образом, что это приводит к сбою преобразования во время сборки (см. здесь ).

Необходимо, чтобы все шаблоны, кроме последнего, трансформировались при сборке, поэтому есть ли способ, которым я могу добиться такого поведения?

Примечание. Этот тип <PropertyGroup> используется в нескольких проектах в нескольких решениях, поэтому для сохранения одинаковых характеристик по всем направлениям я бы предпочел продолжать использовать это для моих преобразований, если это вообще возможно .

1 Ответ

0 голосов
/ 03 января 2019

Добавьте условие к элементу метаданных для шаблона, который вы не хотите преобразовывать, следующим образом:

<Content Include="TextTemplate2.tt" >
  <Generator Condition="$(BuildingInsideVisualStudio)=='true'">TextTemplatingFileGenerator</Generator>
  <LastGenOutput>TextTemplate2.txt</LastGenOutput>
</Content>

Это остановит Microsoft.TextTemplating.targets от распознаванияфайл как файл, который необходимо преобразовать, за исключением случаев, когда выполняется сборка внутри Visual Studio.

...