我创建了一个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);
保存文件(以触发编译),然后再次关闭它。但是我无法让它发挥作用。
有没有人对我有所了解?
答案 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文件添加到解决方案中的所需位置。