以编程方式运行 T4。

4
我正在尝试使用T4生成代码,但是我无法在net 3.5中以编程方式运行我的TextTemplate。
所有应该解释如何做的链接都已失效 This This 保存TextTemplate以生成代码文件的方式可以按预期工作。

备用位置:C:\Program Files (x86)\Common Files\microsoft shared\TextTemplating\14.0 - BurnsBA
1
很有可能它不需要安装,.exe 文件可以独立运行。将其包含到您的项目中(复制并粘贴),随应用程序一起发布、共享或安装。 - Rand Random
如果您需要在构建项目或解决方案时运行T4,则应寻找AutoT4。 - Mauro Sampietro
@rand 随机数,我明天回来尝试并报告结果。 - Ronijo
你指的是哪个XML文件? - Rand Random
显示剩余4条评论
1个回答

7

更新:

有一个比最初提到的版本更新的版本,请在此处查看公告:https://devblogs.microsoft.com/dotnet/t4-command-line-tool-for-dotnet/

它位于

{VS_INSTALL_PATH}\Common7\IDE\TextTransformCore.exe。


根据您的评论。
我已经测试了这种方法,并进行了以下操作:
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#>

只需生成一个简单的.txt文件,其中包含一个DateTime以验证其是否正常工作。
在属性“复制到输出目录”中,将两个文件 - TextTemplate1.tt和TextTransform.exe - 声明为“始终复制”。

现在在某个地方有以下代码,我是在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();
}

(删除路径,因此相对于执行的 .exe 文件 - 需要在同一目录中)
有了这个,你应该成功地获得这个输出 一切都按预期工作,需要更多信息来帮助您找到问题所在。
我的 TextTransform.exe 文件:


@Ronijo,请检查您的路径,异常明确指出“找不到指定的文件”,请使用您知道文件位于那里的完整路径。 - Rand Random
@Ronijo “我的TextTransform.exe可能有问题吗?” - 不太可能 - Rand Random
似乎你的TextTransform.exe和我的有所不同。 - Rand Random
顺便说一下,“系统找不到指定的文件”错误可能是因为您没有在“TextTransform.exe”上指定“始终复制”。 - Rand Random
你是从C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE获取你的 .exe文件的吗?那个对我也没用。 - Rand Random
显示剩余13条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接