【问题标题】:Visual Studio Team Services build Typescript errorVisual Studio Team Services 构建 Typescript 错误
【发布时间】:2016-11-05 17:44:22
【问题描述】:

我有一个使用 Typescript 2.0 的 angular2 web 应用程序。我已经在我的 VS 本地安装了 2.0 版,并在我的 VS 项目中更改了 typescript 版本的标签。本地与构建工作正常。在我的 Visual Studio Team Services 上的 CD 管道中,现在使用 vnext 构建失败:

2016-11-05T16:10:22.0371090Z   C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.8\tsc.exe --project "C:\a\1\s\src\Emersy\tsconfig.json"
2016-11-05T16:10:22.7095466Z ##[error]VSTSC(0,0): Error TS5023: Build: Unknown compiler option 'strictNullChecks'.

看起来构建服务器正在使用typesript 1.8版,这可能吗?

【问题讨论】:

    标签: visual-studio typescript azure-devops azure-pipelines


    【解决方案1】:

    Typescript 2.0 在 Hosted Build 代理中不可用。但是您可以改用 Microsoft.TypeScript.MSBuild 包,之后您可以使用 typescript 2.0 在托管代理上构建项目。

    1. 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.3\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\2.0.6\tools\tsc</TscToolPath>
      

    【讨论】:

    • 您知道 typescript 2 何时可以在托管构建中使用吗?
    • @cpiock 不,没有关于它的官方文章。您可以跟踪本文的更新(visualstudio.com/en-us/docs/build/admin/agents/hosted-pool
    • 这个答案对我有用,但最初令人困惑,因为我不明白第二组步骤都是用于编辑 .csproj,因为这些行太长了,你看不到那个一个子步骤是使用 NuGet 包的目标,另一个是使用包的 props 文件。我已经提交了一个编辑来澄清这一点。我看到你在很多地方都使用了这个答案,所以希望这些澄清可以让其他人更容易采用这个修复。
    • 注意:我刚刚安装了 NuGet 包 (2.0.6),这就是我需要做的所有事情。该软件包显然自动添加了 2a(2b 不存在 - 仍然有效)
    • 如果我们这样做,那么我们是否还需要在每个开发人员工作站上安装 TypeScript for Visual Studio 2015 工具?
    【解决方案2】:

    我认为托管构建代理目前不支持 TypeScript 2.0。

    来自VisualStudio.com

    TypeScript 1.4 for Visual Studio 2013
    TypeScript 1.6 for Visual Studio 2013 and Visual Studio 2015
    TypeScript 1.7.5 for Visual Studio 2013
    TypeScript 1.7.6 for Visual Studio 2015
    TypeScript 1.8.6 for Visual Studio 2013 and Visual Studio 2015
    WIX Toolset 3.10
    

    【讨论】:

    • 文档似乎有部分错误,因为并非所有列出的版本都有效。例如。我试过 1.8.6 - 不在那里。不过 1.4 和 1.6 有效。
    【解决方案3】:

    TypeScript 2.0.6 现在可用于托管构建代理。

    https://www.visualstudio.com/en-us/docs/build/admin/agents/hosted-pool

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-05
      • 1970-01-01
      • 2013-03-18
      • 1970-01-01
      • 2016-10-22
      • 1970-01-01
      • 2017-11-26
      相关资源
      最近更新 更多