Visual Studio 在线构建在 TypeScript 上失败

Visual Studio Online Build failing on TypeScript

我正在 Visual Studio 在线托管服务器上构建我的项目,它说它是 运行 旧版本:

PreComputeCompileTypeScriptWithTSConfig:
  C:\Program Files (x86)\Microsoft SDKs\TypeScript.8\tsc.exe has TypeScript 2.0.6 installed.  

当我尝试构建时,出现构建错误,我认为这些错误是由 --project "d:_work\s\Main\SRC\Portal\tsconfig.json" 引起的 使用 TSConfig 编译 TypeScript: C:\Program Files (x86)\Microsoft SDKs\TypeScript.8\tsc.exe --project "d:_work\s\Main\SRC\Portal\tsconfig.json" ##[错误]VSTSC(0,0):错误 TS5023:构建:未知编译器选项 'baseUrl'。 VSTSC:错误 TS5023:构建:未知编译器选项 'baseUrl'。 [d:_work\s\Main\SRC\MyProject.csproj] ##[错误]VSTSC(0,0):错误 TS5023:构建:未知编译器选项 'paths'。 VSTSC:错误 TS5023:构建:未知编译器选项 'paths'。 [d:_work\s\Main\SRC\MyProject.csproj] ##[错误]VSTSC(0,0):错误 TS5023:构建:未知编译器选项 'typeRoots'。 VSTSC:错误 TS5023:构建:未知编译器选项 'typeRoots'。 [d:_work\s\Main\SRC\MyProject.csproj] 完成构建项目 "d:_work\s\Main\SRC\MyProject.csproj"(默认目标)——失败。 完成构建项目 "d:_work\s\Main\Solutions\MyProject.sln"(默认目标)-- 失败。

我有指定的

<TypeScriptToolsVersion>2.0</TypeScriptToolsVersion>

在我的项目文件中,但它似乎没有被识别。我缺少什么来强制更新 TS 版本到 运行?这可能是由其他原因引起的吗?

更新: 看来我可以降级到 1.7 并且它会识别(但明显中断),但它不会使用 2.0 - 这表明它没有安装在托管机器上。手动将构建命令设置为

然后我得到错误

[error]C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\TypeScript\Microsoft.TypeScript.targets(165,5):

Error : Your project file uses a different version of the TypeScript compiler and tools than is currently installed on this machine. No compiler was found at C:\Program Files (x86)\Microsoft SDKs\TypeScript.0\tsc.exe. You may be able to fix this problem by changing the element in your project file.

但是根据这个:https://www.visualstudio.com/en-us/docs/build/admin/agents/hosted-pool#software - 它应该安装(使用 Visual Studio 15),对吗?

测试结果和你一样,还是用1.8。

请参考以下步骤处理此问题:

  1. Add/Install Microsoft.TypeScript.MSBuild package 到您的项目
  2. 编辑您的项目文件 (.csproj)

    a.) 配置 MSBuild 以使用 NuGet 包的 props 文件。

    <Import Project="..\packages\Microsoft.TypeScript.MSBuild.2.0.6\build\Microsoft.TypeScript.MSBuild.props" Condition="Exists('..\packages\Microsoft.TypeScript.MSBuild.2.0.6\build\Microsoft.TypeScript.MSBuild.props')" />
    <!--<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props')" />-->
    

    b.) 配置 MSBuild 以使用 NuGet 包的目标文件。

    <Import Project="..\packages\Microsoft.TypeScript.MSBuild.2.0.6\build\Microsoft.TypeScript.MSBuild.targets" Condition="Exists('..\packages\Microsoft.TypeScript.MSBuild.2.0.6\build\Microsoft.TypeScript.MSBuild.targets')" />
    <!--<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets')" />-->
    

    如果是.Net Core项目,将这段代码添加到.xproj文件的部分

    <TypeScriptToolsVersion>2.0.6</TypeScriptToolsVersion>
    <TscToolPath>C:\Users\[user account]\.nuget\packages\Microsoft.TypeScript.MSBuild.0.6\tools\tsc</TscToolPath>