从t4模板编译typescript文件

时间:2013-03-08 18:16:20

标签: t4 typescript envdte web-essentials

我创建了一个t4模板,它根据我的c#dtos创建了typescript dto文件。在生成期间,我还想将生成的ts文件编译成js文件并将它们添加到解决方案中,就像web essentials在保存ts文件时为我做的那样。

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

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

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

有没有人对我有所了解?

3 个答案:

答案 0 :(得分:2)

我最终按照Ryan Cavanaugh的提议做了,只是调用了编译器。我使用Olegs tips for creating more than one output for a template将生成的文件添加到项目和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();
}
#>

答案 1 :(得分:0)

正确的方法是在T4模板之后运行一个单独的Build Target(或Task)并编译输出。 T4似乎不适合这个。

答案 2 :(得分:0)

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