我正在使用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
的值是动态生成的
答案 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