C# 使用C运行T4模板

C# 使用C运行T4模板,c#,t4,customtool,C#,T4,Customtool,我有T4模板mycode.tt,它生成一个cs文件。我通常右键单击tt文件并选择RunCustomTool,它在内部获取一个xml文件并为我生成代码。现在,我想使用c windows应用程序运行自定义工具。所以,只要点击一个按钮,我就想运行自定义工具。可以从c运行CustomTool吗 编辑: 我有2个tt文件,其中一个没有代码隐藏的cs文件。但是另一个文件附带了一个.cs文件,我正在从第一个.tt文件调用第二个文件的TransformText方法。所以我需要调用第一个文件,所以我不能使用Tra

我有T4模板mycode.tt,它生成一个cs文件。我通常右键单击tt文件并选择RunCustomTool,它在内部获取一个xml文件并为我生成代码。现在,我想使用c windows应用程序运行自定义工具。所以,只要点击一个按钮,我就想运行自定义工具。可以从c运行CustomTool吗

编辑:


我有2个tt文件,其中一个没有代码隐藏的cs文件。但是另一个文件附带了一个.cs文件,我正在从第一个.tt文件调用第二个文件的TransformText方法。所以我需要调用第一个文件,所以我不能使用TransformText方法。有没有一种方法可以动态调用textTemplate文件?

当您使用VS2010时,您可以轻松实现它。如果向项目中添加新文件,请选择预处理的文本模板文件。您可以像往常一样编辑模板。该文件不直接生成输出,而是生成正常生成的代码。我知道这听起来很混乱。但您在输出文件中看到的是文本模板工具箱生成的代码,用于或多或少地获取输出

这是一个名为TestTemplate.tt的预处理文本模板的简短示例,以及如何在代码中使用它:

tt文件:


我建议使用上面由@jb\回答的预处理路线

作为替代方案,如果您需要模板在没有编译步骤的情况下仍然可以编辑,以便与自定义C应用程序一起使用,并且该应用程序将仅部署在Visual Studio旁边的计算机上,那么您可以编写自定义主机


对于现有模板,可以将属性中的自定义工具从TextTemplatingFileGenerator更改为TextTemplatingFilePreprocessor。如何提供参数?
<#@ 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());
        }
    }
}