2

我创建了一个 t4 模板,它基于我的 c# dtos 创建 typescript dto 文件。在生成过程中,我还想将生成的 ts 文件编译成 js 文件并将它们添加到解决方案中,就像我保存 ts 文件时 web Essentials 对我所做的那样。

我最初的想法是以某种方式触发保存事件;

EnvDTE.DTE dte = (EnvDTE.DTE) ((IServiceProvider) this.Host).GetService(typeof(EnvDTE.DTE));
dte.OpenFile(EnvDTE.Constants.vsViewKindAny, outputFilePath);

保存文件(触发编译),然后再次关闭它。但我无法让它发挥作用。

有人对我有想法吗?

4

3 回答 3

2

我最终按照 Ryan Cavanaugh 的建议做了,只是调用了编译器。我使用Olegs 技巧为模板创建多个输出,以将生成的文件添加到项目和 tt 模板中。

我通过以下代码启动了编译器:

<#+ 
void CompileTypeScriptFile(string fullFileName)
{
    var process = new System.Diagnostics.Process
    {
        StartInfo = new ProcessStartInfo
        {
            FileName = "tsc.exe",
            Arguments = "--target ES5 \"" + fullFileName + "\""

        }
    };
    process.Start();
    process.WaitForExit();
}
#>
于 2013-03-18T14:24:33.403 回答
0

正确的做法是有一个单独的构建目标(或任务)在 T4 模板之后运行并编译输出。T4 似乎不适合这个。

于 2013-03-12T03:09:41.753 回答
0

您可以使用T4Toolbox将您的 T4 文件与 .ts 文件相关联。它将“自定义工具模板”添加到 Visual Studio 属性窗口,并提供一个名为 T4Toolbox.TemplatedFileGenerator 的自定义工具,该工具将在保存 .ts 文件时自动转换模板。您可以使用 T4Toolbox 的输出管理功能将生成的 .js 文件添加到解决方案中的所需位置。

于 2013-03-18T05:35:25.260 回答