2011-01-24 55 views
16

我有T4模板(mycode.tt),它會生成一個cs文件。我通常右鍵單擊tt文件,然後選擇RunCustomTool,它在內部使用一個xml文件併爲我生成代碼。現在我想用c#windows應用程序運行自定義工具。所以點擊一個按鈕我想運行自定義工具。是否有可能從c#運行CustomTool。使用C運行T4模板#

編輯:

我有2頁TT的文件,其中一人沒有一個代碼隱藏文件的CS。但是另一個文件附帶了一個.cs文件,我正在從第一個.tt文件調用第二個文件的TransformText()方法。所以我需要調用第一個文件。所以我不能使用TransformText()方法。有沒有辦法動態調用textTemplate文件?

回答

7

我建議使用@jb_回答上面的預處理路線。作爲一種替代方法,如果您需要的模板仍然可以在您的自定義C#應用程序沒有編譯步驟的情況下進行編輯,並且應用程序將只部署在與Visual Studio一起的計算機上,則可以編寫自定義主機。

http://msdn.microsoft.com/en-us/library/bb126519.aspx

17

當您使用VS2010時,您可以輕鬆實現它。如果您將新文件添加到項目中,請選擇一個預處理文本模板文件。您可以像正常一樣編輯模板。該文件不是直接生成輸出,而是生成正常生成的代碼。我知道這聽起來很混亂。但是,您在輸出文件中看到的是由文本模板工具包生成的代碼(或多或少)。

這是名爲 「TestTemplate.tt」 你怎麼在代碼中使用它預處理文本模板的一個簡單的例子:

的TT-文件:

<#@ template language="C#" #> 
Some output. 

代碼:

using System; 
using System.Diagnostics; 

namespace Test 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      TestTemplate testTemplate = new TestTemplate(); 
      Debug.Print(testTemplate.TransformText()); 
     } 
    } 
} 
+5

對於您可以在屬性從`TextTemplatingFileGenerator`到`TextTemplatingFilePreprocessor`更改自定義工具現有的模板。 – 2011-08-19 01:01:18