我正在尝试使用Include将一个模板嵌入到另一个模板中。这应该通过documentation工作,但我遇到了问题。见下面的例子。
示例:
LicenceHeader.tt
// stuff here
//
<#@include file="AboutHeader.tt" #>
AboutHeader.tt
// different stuff
Main.tt
<#@include file="LicenceHeader.tt" #>
当我尝试转换Main.tt时,会导致以下错误。
加载包含文件&#39; AboutHeader.tt&#39;返回null或空字符串。转换不会运行。 &#34;
如果我将main.tt更改为下面的代码并对其进行转换,则可以正常工作
Main.tt
<#@include file="LicenceHeader.tt" #>
<#@include file="AboutHeader.tt" #>
我的猜测是,当生成器嵌入另一个模板时,发现AboutHeader.tt存在问题。我将模板设置为始终复制。我应该提供一些目录吗?我确实试过$(myIncludeFolder)\
但是它没有用,并且使用$(TargetDir)也没有用。
Actuall文件位置:
主模板完整路径是
C:\\Users\\HP_User\\Documents\\Visual Studio 2015\\Projects\\SampleBuilder\\Src\\GoogleSampleBuilder\\GoogleSampleBuilder\\Templates\\Csharp\\MethodTemplate.tt
我将两个子模板设置为复制本地,因为我想避免将完整路径嵌入到模板中。该路径实际上存储为app.config中的属性。
目录布局
项目
- &GT;模板
-----&GT; CSHARP
------------&GT; MainTemplate.tt
------------&GT; AboutHeader.tt
------------&GT; LicenceHeader.tt
使用var host = new TemplateHost(templateFileName);