gpt4 book ai didi

MSBuild TypeScript 编译目标

转载 作者:搜寻专家 更新时间:2023-10-30 20:37:34 26 4
gpt4 key购买 nike

我有一个 T4 模板,它生成一些我想包含在我的 TypeScript 构建中的 .d.ts 文件。我想更好地了解 TypeScript 编译器何时真正作为构建的一部分运行(或从 .ts 文件保存),以便我可以确保在 TypeScript 构建之前运行我的 T4 生成目标。

谁能给我更多详细信息:

  1. CompileTypeScript 目标何时实际运行?
  2. PreComputeCompileTypeScript 目标实际上在做什么?
  3. 是否有建议的方法来确保 MSBuild 目标在 TypeScript 构建之前运行?

(以防万一,我使用的是 VS2013 Update 3。)

最佳答案

1.CompileTypeScript 目标何时实际运行?

CompileTypeScript 添加到 CompileDependsOn 列表,此列表在此处定义:“C:\Program Files (x86)\MSBuild\12.0\Bin\Microsoft.Common.CurrentVersion.targets”。默认目标(通常是构建)取决于 CoreBuild,后者又需要执行编译目标,请参阅目标编译(第 2762 行)和目标核心构建(第 703 行)。

因此,当目标构建时,它会执行 TypeScript 构建,因为构建需要 BeforeBuild、CoreBuild 和 AfterBuild 才能运行。 CoreBuild 目标需要很多目标,包括在 Microsoft.TypeScript.targets 文件中添加自身的编译和 TypeScipt(“C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\TypeScript\Microsoft.TypeScript.targets ”)。见:

<PropertyGroup>
<CompileDependsOn>
CompileTypeScript;
$(CompileDependsOn);
</CompileDependsOn>
</PropertyGroup>

2.PreComputeCompileTypeScript 目标实际上在做什么?

它试图在使用时为 outDir 选项找到最常见的路径。此外,当没有 TypeScript 文件时,此任务会给出错误:没有要编译的文件(或其他)。当指定单个输出(--out 参数)时,它会做不同的事情。看起来 VS 正在提供编译器的完整路径,并且此任务在可能的情况下使它们成为相对路径(虽然我不知道这样做的原因)。

3.是否有建议的方法来确保 MSBuild 目标在 TypeScript 构建之前运行?

当您创建自己的 msbuild 任务时,您可以修改 compileDependsOn 目标。您应该在导入 Microsoft.TypeScript.targets 后执行此操作。您可以这样更改它:

<PropertyGroup>
<CompileDependsOn>
CompileYourTarget;
$(CompileDependsOn);
</CompileDependsOn>
</PropertyGroup>

编辑:我更改了答案的第 2 部分

关于MSBuild TypeScript 编译目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26383602/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com