【问题标题】:Compile typescript file from t4 template从 t4 模板编译打字稿文件
【发布时间】:2013-03-08 18:16:20
【问题描述】:

我创建了一个 t4 模板,它根据我的 c# dto 创建 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);

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

有人对我有什么想法吗?

【问题讨论】:

  • 看起来直接调用 tsc.exe 会容易得多?
  • 你可能是对的,但知道它是否可行仍然会很有趣。
  • @Julius:你能解释一下你是怎么做到的吗?
  • 在下面查看我自己的答案

标签: t4 typescript envdte web-essentials


【解决方案1】:

我最终按照 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();
}
#>

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 您能否详细说明如何执行此操作的示例?不想重新编译项目中的所有ts文件(需要looooong)
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-01
      • 1970-01-01
      • 2013-08-19
      • 2023-03-24
      • 2016-03-01
      • 1970-01-01
      • 2022-11-15
      • 2015-03-11
      相关资源
      最近更新 更多