2011-01-24 80 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