包含t4模板

时间:2016-12-11 15:03:46

标签: c# templates t4

我正在尝试使用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);

上方的完整路径调用模板

0 个答案:

没有答案