我正在测试 T4 文本模板的运行时文本生成功能。
通常模板必须从应用程序的其他部分导入一些数据。为方便起见,模板构建的代码是一个分部类。您可以在项目的另一个文件中创建同一类的另一个部分。该文件可以包含一个带有参数、属性和函数的构造函数,这些参数、属性和函数既可以被嵌入在模板中的代码访问,也可以被应用程序的其余部分访问。
我试过这个(VS2017 - .NET 4.6.1)并在编译时得到以下错误 -
“CSharpFunction”不包含“TransformText”的定义
命名空间不能直接包含成员,例如字段或方法
编译转换:当前上下文中不存在名称“FunctionName”
当前上下文中不存在名称“ErrorGeneratingOutput”。
CSharpFunction.cs
partial class CSharpFunction
{
private string FunctionName;
public CSharpFunction(string functionName)
{
FunctionName = functionName;
}
}
Run Code Online (Sandbox Code Playgroud)
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#>");
}
Run Code Online (Sandbox Code Playgroud)
程序.cs
class Program
{
static void Main(string[] args)
{
var obj = new CSharpFunction("Test");
string output = obj.TransformText();
Console.WriteLine(output);
Console.ReadLine();
}
}
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?
确保您的运行时文本模板文件的属性自定义工具设置为TextTemplatingFilePreprocessor。
这是通过创建运行时文本模板自动完成的,该模板与在 Visual Studio 中创建文本模板时的文件类型不同。
| 归档时间: |
|
| 查看次数: |
1187 次 |
| 最近记录: |