如何使Visual Studio在构建时转换特定的T4模板?

时间:2019-01-03 02:27:22

标签: visual-studio tfs msbuild t4

是否可以使Visual Studio在构建时仅构建一组特定的T4模板?

当前,我使用here提供的解决方案在构建时使Visual Studio转换我的T4模板文件的全部。但是,我有一个T4模板,在构建期间进行转换时会运行到this issue中。因此,我要转换所有模板除了之外的特定模板。

更具体地说,我的.csproj中包含以下代码:

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

哪个“可以”以我想要的方式重建我的大部分T4模板。

但是,我的.csproj中包含一个T4模板,该模板使用Host变量,从而在构建期间导致转换失败(请参见here )。

除了模板,所有模板都必须在构建时进行转换,所以有什么办法可以实现这种行为?

注意:这种<PropertyGroup>类型在多个解决方案中的多个项目中使用,因此,为了使整个项目保持一致,我希望继续使用它进行转换(如果在一切可能。

1 个答案:

答案 0 :(得分:1)

为您不想转换的模板的元数据项添加条件,如下所示:

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

这将阻止 Microsoft.TextTemplating.targets 将文件识别为需要转换的文件,除非在Visual Studio中进行构建。