如何编译(“构建”).csproj C# 项目中的所有 TypeScript 文件?

g.p*_*dou 3 msbuild typescript visual-studio-2017

语境

有时我想在标准 VS 2017 .NET Framework C# 项目 (.csproj) 中构建/重新编译所有 TypeScript 文件,而不构建 dll 等。即使是控制台命令行解决方案,我也会很高兴。

到目前为止我所做的:

我可以使用 MSBuild 来编译所有内容:c:\>msbuild.exe my.csproj. 我什至发现已安装的 nuget 包Microsoft.TypeScript.MSBuild.2.7.2包含在我的 .csproj 中,并且定义了 CompileTypeScript 目标,但不幸的是c:\>msbuild.exe my.csproj -t:CompileTypeScript返回 0 个错误、0 个警告并且什么也不做。(据说在错误的位置查找 ts 文件,但没有找到)注意:引用不存在的目标会给出一条信息性错误消息,因此肯定会找到目标。

问题

无论 MSBuild 的想法如何,我都想编译 .csproj 项目中的所有 TypeScript 文件,并使用其中定义的相同 TypeScript 编译器设置。我怎样才能完成这个任务?

小智 5

以下命令对我有用:

msbuild YourProject.csproj -t:CompileTypeScript -p:BuildingProject=true
Run Code Online (Sandbox Code Playgroud)

Microsoft.TypeScript.targets 中的“CompileTypeScript”任务中存在“BuildingProject”条件:

<Target Name="CompileTypeScript" Condition="'$(BuildingProject)' != 'false'" DependsOnTargets="$(CompileTypeScriptDependsOn)" Inputs="@(TypeScriptCompile)" Outputs="@(GeneratedJavascript)">
Run Code Online (Sandbox Code Playgroud)

本质上,我必须欺骗目标,让其认为该项目确实正在构建,以便它能够通过条件并执行。

我应该注意,我正在使用 TS 1.6,因此这可能不适用于 2.7.2。