【发布时间】:2018-06-30 04:43:46
【问题描述】:
我正在测试 T4 文本模板的运行时文本生成功能。
MSDN - Run-Time Text Generation with T4 声明:
通常模板必须从其他部分导入一些数据 应用。为方便起见,模板构建的代码是 部分类。您可以在中创建同一类的另一部分 项目中的另一个文件。该文件可以包含一个构造函数 可以同时访问的参数、属性和函数 嵌入在模板中的代码,以及其余的 应用。
我试过这个(VS2017 - .NET 4.6.1)并在编译时得到以下错误 -
“CSharpFunction”不包含“TransformText”的定义
命名空间不能直接包含字段或方法等成员
编译转换:当前上下文中不存在名称“FunctionName”
当前上下文中不存在名称“ErrorGeneratingOutput”。
CSharpFunction.cs
partial class CSharpFunction
{
private string FunctionName;
public CSharpFunction(string functionName)
{
FunctionName = functionName;
}
}
CSharpFunction.tt
<#@ template language="C#" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
public void <#=FunctionName#>()
{
Console.WriteLine("<#=FunctionName#>");
}
Program.cs
class Program
{
static void Main(string[] args)
{
var obj = new CSharpFunction("Test");
string output = obj.TransformText();
Console.WriteLine(output);
Console.ReadLine();
}
}
我错过了什么吗?
【问题讨论】:
-
是的,它适用于运行时模板