Visual studio 2015 MSBuild不';t在VS2017中为VS2015(v140)工具包工作

Visual studio 2015 MSBuild不';t在VS2017中为VS2015(v140)工具包工作,visual-studio-2015,command-line,visual-studio-2017,toolkit,Visual Studio 2015,Command Line,Visual Studio 2017,Toolkit,我已使用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:找

我已使用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:找不到v140的生成工具(平台工具集='v140')。要使用v140构建工具进行构建,请安装v140构建工具。或者,您可以通过选择“项目”菜单或右键单击解决方案,然后选择“升级解决方案…”,升级到当前的Visual Studio工具。[q:\ExternalLibraries\cryptopp-5.6.5-2015\cryptolib.vcxproj]

但当我在VS IDE中打开相同的项目/解决方案时,我看到该项目已经配置为2015项目,并且我能够使用v140工具包编译它而不会出现问题

还值得注意的是,NMAKE命令行工具工作起来没有任何问题。只有MSBUILD返回此奇怪错误

为了能够在命令行中使用VS2017中的VS140工具包,我还需要做些什么

编辑:

基于详细的VS登录IDE,IDE似乎会默默地忽略工具版本。这是来自日志的错误消息

项目文件包含ToolsVersion=“12.0”。此工具集可能未知或缺失,在这种情况下,您可以通过安装适当版本的MSBuild来解决此问题,或者由于策略原因,该生成可能已被强制为特定的ToolsVersion。将项目视为具有ToolsVersion=“15.0”的项目。有关更多信息,请参阅

所以我尝试将解决方案升级到最新版本,然后手动设置v140工具集,而不是v141

但现在MSBuild返回以下错误:

“q:\ExternalLibraries\cryptopp-5.6.5-2015\Cryptoest.sln”(重建目标)(1)-> “q:\ExternalLibraries\cryptopp-5.6.5-2015\cryptest.vcxproj.metaproj”(重建目标)(2)-> “q:\ExternalLibraries\cryptopp-5.6.5-2015\cryptolib.vcxproj”(重建目标)(3)-> q:\ExternalLibraries\cryptopp-5.6.5-2015\cryptolib.vcxproj(44,3):错误MSB4019:导入的项目“q:\Microsoft.Cp” p、 找不到“Default.props”。确认声明中的路径正确,并且文件存在 在磁盘上

提到的
import
元素在vcxproj中确实存在,其值如下

因此,
VCTargetsPath
似乎未被填充,因此MSBuild无法找到它。有什么建议吗

PS:当我从VS2017命令提示符运行同一个项目时,编译工作没有任何问题。

C:\Program Files(x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat是VS 2015版本,不支持
v141

VS 2017现在支持使用不同版本并行安装自身,并且不再共享VS 2015和更早版本所使用的全局MSBuild规则集。您需要使用VS 2017版本的工具/变量,以使其同时支持
v140
v141

对于VS 2017 Enterprise,它是
C:\Program Files(x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvars32.bat

对于社区,它将是
C:\ProgramFiles(x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars32.bat

要在命令行中使用
v140
,您需要使用一些附加参数:

vcvarsall.bat x86 -vcvars_ver=14.0

谢谢你的回复和提示,我刚刚找到了解决办法。因为我试图在VS2017环境中使用v140,所以仅使用vcvars32.bat是不够的。最重要的事情(您没有提到)是使用-vcvars\u ver=parameter。因此,v140工具包的完整命令是“vcvarsall.bat x86-vcvars\u ver=14.0”。只有这样,您才能正确配置14.0环境。请将其添加到您的答案中,我将选择它作为已接受。