动态包含另一个t4模板

时间:2016-06-08 15:36:10

标签: c# t4

我正在使用t4模板并面临以下问题。我需要在我的模板中包含另一个现有的t4模板。但我有一个限制:包含t4模板文件的名称是动态生成的。 我为此使用了include指令,但它没有用。

<#@ include file="\Helpers\<# FileName.tt#>" #>

我收到错误:

 An unexpected start or end tag was found within a block. Make sure that you did not mis-type a start or end tag, and that you do not have any nested blocks in the template.

属性FileName的值是动态生成的

1 个答案:

答案 0 :(得分:0)

为了使用参数,您需要设置msbuild属性(比如在BeforeBuild目标中)或传递给msbuild为/ p:TargetPath =“[path]”,您可以使用它们:

<#@ include file="$(TargetPath)\TargetFile.tt" #>

(有关此处MSBuild properties usage的更多信息)

此外,您可以配置t4模板以在每个版本上运行

<!-- This line could already present in file. If it is so just skip it  -->
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- process *.tt templates on each build  -->
<PropertyGroup>
    <TransformOnBuild>true</TransformOnBuild>
</PropertyGroup>
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\TextTemplating\v10.0\Microsoft.TextTemplating.targets" />

......如上所述:Get Visual Studio to run a T4 Template on every build