【问题标题】:TypeScript VsTsc error in Visual Studio 2017Visual Studio 2017 中的 TypeScript VsTsc 错误
【发布时间】:2017-07-28 11:52:45
【问题描述】:

我正在测试 .NET Core / TypeScript 项目从 VS 2015 到 VS 2017 的迁移。

在 VS 2017 中构建失败,Microsoft.TypeScript.targets 出现此错误:

MSB4064 The "PreferredUILang" parameter is not supported by the "VsTsc" task. Verify the parameter exists on the task, and it is a settable public instance property.

VS 2017中TypeScript的版本是2.1.5,不过我已经安装了Visual Studio 2015的2.2.1 SDK。

我还注意到 Visual Studio 2017 还没有 2.2+ SDK 版本。

这会导致冲突吗?这是我现在可以解决的问题,还是需要等待 TypeScript SDK for VS 2017 的更新达到 2.2.1+?

感谢您在这方面的任何帮助!

【问题讨论】:

  • 通过更改打字稿编译器文件夹名称来更改我正在做的打字稿版本。但是我必须记住我的视觉工作室调用的文件夹 1.8 包含打字稿 2.1。
  • 请注意 - 使用更新 2,也将 TS 2.2.2 引入 Visual Studio 2017,此问题不再存在。

标签: visual-studio typescript visual-studio-2017


【解决方案1】:

这可能是解决问题的一个粗略的解决方案,但我们只是简单地检查了“Microsoft.TypeScript.targets”文件并从任何<VsTsc ... > 节点中删除了PreferredUILang="$(PreferredUILang)",我们查看了 Typescript 任务 dll 和它似乎没有 PreferredUILang 属性。

有可能从前该任务确实具有这样的属性但已被删除,并且 Microsoft 忘记更新目标文件,我不确定,但这似乎至少对我们有用。

请确保在编辑之前备份您的“Microsoft.TypeScript.targets”文件。

【讨论】:

    【解决方案2】:

    从 CSPROJ 中删除以下行为我解决了问题

    <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props')" />
    <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets')" />
    <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\WebApplications\Microsoft.WebApplication.targets" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\WebApplications\Microsoft.WebApplication.targets')" />
    

    编辑csproj文件

    • 右键单击解决方案资源管理器中的项目。
    • 选择“卸载项目”
    • 项目现已卸载。
      • 再次右键单击项目并选择 "编辑 blah.csproj"
      • 进行更改并保存。

    【讨论】:

      【解决方案3】:

      我在 VS2015 Update 3 中遇到了同样的问题,我还按照 ginja 的建议修复了 Microsoft.TypeScript.targets,但由于我不喜欢破解 nuget 包,所以我更深入地研究了这个问题。

      真正的问题是,当您添加/升级​​ typescript nuget 包时,您必须手动删除对机器范围的目标和道具的导入。两者都会导致未知的加载顺序或目标/tasks,这会在此类错误中表现出来。

      所以我使用的方法是:

      1. 从项目中卸载 nuget 包“Microsoft.TypeScript.Compiler”和 Microsoft.Typescript.MSBuild”
      2. 关闭 VS(以保证此类包真正干净)
      3. 编辑您的 .csproj 文件,注释掉对机器范围目标和道具的导入:(全部 &lt;Import Project="$(MSBuildExtensionsPath32)\Microsoft\...
      4. 重启VS,打开项目并再次添加Typescript的nuget包。这一点使用正确的 TypeScript 编译器导入和配置正确更新了您的 .csproj。
      5. 只是为了一个干净的保险箱:重新启动 VS。

      【讨论】:

        猜你喜欢
        • 2017-08-28
        • 2017-12-23
        • 2018-08-15
        • 1970-01-01
        • 2020-02-12
        • 2017-08-04
        • 2017-08-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多