【发布时间】:2018-02-22 17:35:50
【问题描述】:
我已经安装了带有 v141 (2017) 和 v140(2015) 工具包的 VS2017。
很遗憾,MSBUILD 命令行不适用于 v140 工具包。
当我使用“C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat”时出现此错误:
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.Cpp.Platform.targets(64,5): 错误 MSB8020: The build tools for v140 (Platform工具集 = 'v140') 找不到。要使用 v140 构建工具进行构建,请安装 v140 构建工具。或者,您可以通过选择“项目”菜单或右键单击解决方案,然后选择“升级解决方案...”来升级到当前的 Visual Studio 工具。 [q:\ExternalLibraries\cryptopp-5.6.5-2015\cryptlib.vcxproj]
但是当我在 VS IDE 中打开相同的项目/解决方案时,我看到该项目已经配置为 2015 项目,我可以使用 v140 工具包毫无问题地编译它。
另外值得注意的是,NMAKE 命令行工具可以正常工作。只有 MSBUILD 会返回这个奇怪的错误。
我还需要做什么才能在命令行中使用 VS2017 中的 VS140 工具包吗?
编辑:
根据 IDE 中的详细 VS 日志,IDE 似乎默默地忽略了工具版本。这是来自日志的错误消息
项目文件包含 ToolsVersion="12.0"。此工具集可能未知或丢失,在这种情况下,您可以通过安装适当版本的 MSBuild 来解决此问题,或者出于政策原因,构建可能已被强制使用特定的 ToolsVersion。将项目视为具有 ToolsVersion="15.0"。更多信息请见http://go.microsoft.com/fwlink/?LinkId=293424。
所以我尝试将解决方案升级到最新版本,而不是手动设置 v140 工具集而不是 v141。
但现在 MSBuilds 返回以下错误:
“q:\ExternalLibraries\cryptopp-5.6.5-2015\cryptest.sln”(重建目标)(1)-> “q:\ExternalLibraries\cryptopp-5.6.5-2015\cryptest.vcxproj.metaproj”(重建目标)(2)-> “q:\ExternalLibraries\cryptopp-5.6.5-2015\cryptlib.vcxproj”(重建目标)(3)-> q:\ExternalLibraries\cryptopp-5.6.5-2015\cryptlib.vcxproj(44,3): 错误 MSB4019: 导入的项目“q:\Microsoft.Cp p.Default.props" 没有找到。确认声明中的路径是正确的,并且文件存在 在磁盘上。
提到的import元素确实存在于vcxproj中,具有以下值
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
因此,VCTargetsPath 似乎没有填充,因此 MSBuild 找不到它。有什么建议吗?
PS:当我从 VS2017 命令提示符运行同一个项目时,编译工作没有任何问题。
【问题讨论】:
标签: visual-studio-2015 command-line visual-studio-2017 toolkit