繁体   English   中英

T4文本生成部分类

[英]T4 Text Generation Partial Classes

我正在测试用于运行时文本生成的T4文本模板化功能。

MSDN-使用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();
    }
}

我想念什么吗?

确保运行时文本模板文件的属性“ 定制工具”设置为TextTemplatingFilePreprocessor

这是通过创建运行时文本模板自动完成的,该运行时文本模板与在Visual Studio中创建文本模板时的文件类型不同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM