Visual Studio 2017中的TypeScript VsTsc错误

时间:2017-03-08 03:25:06

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

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

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版本。

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

在这方面的任何帮助表示赞赏!

3 个答案:

答案 0 :(得分:4)

这可能是问题的一个原始解决方案,但我们只是通过&#34; Microsoft.TypeScript.targets&#34;文件并从任何PreferredUILang="$(PreferredUILang)"节点中删除<VsTsc ... >,我们查看了Typescript任务dll,似乎它没有PreferredUILang属性。

这个任务很可能确实具有这样的属性,但被删除了,微软忘记更新目标文件,我不确定,但这似乎至少对我们有用。 / p>

请确保备份&#34; Microsoft.TypeScript.targets&#34;编辑前的文件。

答案 1 :(得分:3)

我在VS2015 Update 3中遇到同样的问题,我也修复了ginja建议的Microsoft.TypeScript.targets,但由于我不喜欢破解nuget包,所以我在这个问题上做得更深。

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

所以我使用的方法是:

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

答案 2 :(得分:1)

从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”
    • 进行更改并保存。