我正在测试从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 +?
在这方面的任何帮助表示赞赏!
答案 0 :(得分:4)
这可能是问题的一个原始解决方案,但我们只是通过" Microsoft.TypeScript.targets"文件并从任何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,会出现此类错误。
所以我使用的方法是:
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\...
答案 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文件