以编程方式运行T4

Ron*_*ijo 1 c# t4 programmatically

我正在尝试使用T4生成代码,但无法使用Net 3.5以编程方式运行TextTemplate。

这应该所有的链接解释如何做到这一点都死了

通过保存TextTemplate生成代码文件,按预期方式工作。

Ran*_*dom 5

根据您的评论。

我已经测试了该方法并执行以下操作:

将其添加TextTransform.exe到您的项目文件中(通过添加现有项,将其复制并粘贴到您的项目文件夹中,然后引用它,或者进行其他操作)

创建一个新的.tt文件,我的具有以下内容

<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ output extension=".txt" #>
<#
var dateTimeNow = DateTime.Now.ToString();
#>
<#=dateTimeNow#>
Run Code Online (Sandbox Code Playgroud)

(只需使用DateTime生成一个简单的.txt文件,即可查看其工作原理)

声明这两个文件- TextTemplate1.tt and TextTransform.exe-作为Copy always其财产Copy to Output Directory

现在在下面的代码中,我做了 Main

static void Main(string[] args)
{
    File.Delete("TextTemplate1.txt"); //delete the existing file, to make sure the code does what its supposed to do
    Thread.Sleep(1000); //wait for filesystem to do its job

    var proc = new Process
    {
        StartInfo =
        {
            FileName = "TextTransform.exe",
            Arguments = "TextTemplate1.tt"
        }
    };

    proc.Start();
    proc.WaitForExit();
}
Run Code Online (Sandbox Code Playgroud)

(删除路径,因此它相对于正在执行的.exe-必须位于同一目录中)

这样,您应该成功获得此输出

一切正常,需要更多信息来帮助您发现问题。

我的TextTransform.exe文件: