簡體   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