我使用ASP.NET MVC 3 Custom CodeTemplates我需要在一个t4文件中放入一些方法,然后在我的所有t4模板中使用它。
所以这是我的general.tt文件:
<#@ template language="C#" #>
<#@ assembly name="System" #>
<#@ assembly name="System.Core" #>
<#@ assembly name="System.ComponentModel.DataAnnotations" #>
<#@ assembly name="System.Data" #>
<#@ assembly name="System.Data.Entity" #>
<#@ assembly name="System.Data.Linq" #>
<#@ assembly name="System.Xml.Linq" #>
<#@ import namespace="System" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="System.ComponentModel.DataAnnotations" #>
<#@ import namespace="System.ComponentModel" #>
<#@ import namespace="System.Data.Linq.Mapping" #>
<#@ import namespace="System.Data.Objects.DataClasses" #>
<#@ import namespace="System.Reflection" #>
<#@ import namespace="Microsoft.VisualStudio.Web.Mvc.Scaffolding.BuiltIn" #>
<#+
public class XXD {
public string getitNow(){
return "Yup thats it!";
}
}
#>
然后我在create.tt文件中使用它,如下所示:
<#@ include file="general.tt" #>
...
<#+
private string GetitNow(){
XXD xx = new XXD();
return xx.getitNow();
}
但是当我想添加视图使用创建模板时出现错误:
错误:加载包含的文件'general.tt'返回null或空字符串。转型将不会进行。
问题出在哪里?你有什么建议吗?
答案 0 :(得分:5)
上次我检查过时,MVC脚手架仍然使用了ITextTemplatingEngineHost的自定义实现,它实现了include指令,与Visual Studio中的ITextTemplating服务不同。我建议您提交Connect错误,描述您遇到的问题,并要求将MVC中的T4实现更改为内置的ITextTemplating服务,该服务没有此限制和其他限制。
答案 1 :(得分:0)
这通常意味着找不到该文件。 general.tt
与create.tt
的路径不同吗?