通过MSBuild构建Visual Studio 2015 C ++项目(v140)失败-无法找到v140

托马斯·库贝斯(Tomas Kubes)

我同时安装了Visual Studio 2013和2015。我刚刚将组合解决方案(C#,C ++,C ++ / CLI)升级到了2015年,并将Platform Toolset设置为v140。

从Visual Studio生成的工作正常,但不能从MSBuild进行编译。我使用MSBuild 14,MSBuild抱怨找不到v140,但这是无稽之谈,因为在计算机“ c:\ Program Files(x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \ V140”中安装了v140。

无法完成有关升级解决方案的建议,因为解决方案已经升级,并且解决方案上下文菜单中没有此类项目。

如果我将项目的平台工具切换到v120,则可以使用。

细节:

c:\git\hewerMaster>"c:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe"  c:\git
\hewerMaster\Hewer.sln /property:Configuration=Debug /property:Platform=x86
Microsoft (R) Build Engine version 14.0.23107.0
Copyright (C) Microsoft Corporation. All rights reserved.

Building the projects in this solution one at a time. To enable parallel build,
please add the "/m" switch.
Build started 9/12/2015 4:00:25 PM.
Project "c:\git\hewerMaster\Hewer.sln" on node 1 (default targets).
ValidateSolutionConfiguration:
  Building solution configuration "Debug|x86".
ValidateProjects:
  The project "HewerDotNetWrapper" is not selected for building in solution con
  figuration "Debug|x86".
  The project "VisualHewer" is not selected for building in solution configurat
  ion "Debug|x86".
  The project "UnitTestWrapper" is not selected for building in solution config
  uration "Debug|x86".
  The project "ParamsFormatConverter" is not selected for building in solution
  configuration "Debug|x86".
  The project "UnitTestGenerator" is not selected for building in solution conf
  iguration "Debug|x86".
  The project "HewerUnitTestDotNet" is not selected for building in solution co
  nfiguration "Debug|x86".
Project "c:\git\hewerMaster\Hewer.sln" (1) is building "c:\git\hewerMaster\Hewe
rRedirect\HewerRedirect.csproj" (2) on node 1 (default targets).
CoreCompile:
Skipping target "CoreCompile" because all output files are up-to-date with resp
ect to the input files.
_CopyAppConfigFile:
Skipping target "_CopyAppConfigFile" because all output files are up-to-date wi
th respect to the input files.
CopyFilesToOutputDirectory:
  HewerRedirect -> c:\git\hewerMaster\anyCPU\Debug\pbrain-hewer.exe
Done Building Project "c:\git\hewerMaster\HewerRedirect\HewerRedirect.csproj" (
default targets).

Project "c:\git\hewerMaster\Hewer.sln" (1) is building "c:\git\hewerMaster\Hewe
r\Hewer.vcxproj" (3) on node 1 (default targets).
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.Cpp.Platform.t
argets(64,5): error MSB8020: The build tools for v140 (Platform Toolset = 'v140
') cannot be found. To build using the v140 build tools, please install v140 bu
ild tools.  Alternatively, you may upgrade to the current Visual Studio tools b
y selecting the Project menu or right-click the solution, and then selecting "U
pgrade Solution...". [c:\git\hewerMaster\Hewer\Hewer.vcxproj]
Done Building Project "c:\git\hewerMaster\Hewer\Hewer.vcxproj" (default targets
) -- FAILED.

Done Building Project "c:\git\hewerMaster\Hewer.sln" (default targets) -- FAILE
D.


Build FAILED.

更新:

  • 从Debug X86跳过了一些项目。这是故意的。
  • 该项目最初是在VS2008中创建的,然后升级到VS2013,然后升级到VS2015。
  • 此计算机上安装了两个Visual Studio(2013社区和2015社区)。首先安装2013,之后安装2015。

注册表设置如下所示: 在此处输入图片说明

MS Build注册表设置

UPDATE2: 最小,完整和可验证的示例

我在Visual Studio 2015中创建了空的C ++控制台应用程序:

https://dl.dropboxusercontent.com/u/53387801/ConsoleApplication_v140.zip

#include "stdafx.h"

int main()
{
    return 0;
}

我可以在Visual Studio中构建它,但是在MSBuild中会遇到相同的问题:

c:\>"c:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild" "C:\temp\vs2015_simplest\C
onsoleApplication1\consoleApplication1.sln"
Microsoft (R) Build Engine version 14.0.23107.0
Copyright (C) Microsoft Corporation. All rights reserved.

Building the projects in this solution one at a time. To enable parallel build,
please add the "/m" switch.
Build started 9/16/2015 10:16:20 AM.
Project "C:\temp\vs2015_simplest\ConsoleApplication1\consoleApplication1.sln" o
n node 1 (default targets).
ValidateSolutionConfiguration:
  Building solution configuration "Debug|x64".
Project "C:\temp\vs2015_simplest\ConsoleApplication1\consoleApplication1.sln" (
1) is building "C:\temp\vs2015_simplest\ConsoleApplication1\ConsoleApplication1
\ConsoleApplication1.vcxproj" (2) on node 1 (default targets).
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.Cpp.Platform.t
argets(64,5): error MSB8020: The build tools for v140 (Platform Toolset = 'v140
') cannot be found. To build using the v140 build tools, please install v140 bu
ild tools.  Alternatively, you may upgrade to the current Visual Studio tools b
y selecting the Project menu or right-click the solution, and then selecting "U
pgrade Solution...". [C:\temp\vs2015_simplest\ConsoleApplication1\ConsoleApplic
ation1\ConsoleApplication1.vcxproj]
Done Building Project "C:\temp\vs2015_simplest\ConsoleApplication1\ConsoleAppli
cation1\ConsoleApplication1.vcxproj" (default targets) -- FAILED.

Done Building Project "C:\temp\vs2015_simplest\ConsoleApplication1\consoleAppli
cation1.sln" (default targets) -- FAILED.


Build FAILED.

"C:\temp\vs2015_simplest\ConsoleApplication1\consoleApplication1.sln" (default
target) (1) ->
"C:\temp\vs2015_simplest\ConsoleApplication1\ConsoleApplication1\ConsoleApplica
tion1.vcxproj" (default target) (2) ->
(PlatformPrepareForBuild target) ->
  C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.Cpp.Platform
.targets(64,5): error MSB8020: The build tools for v140 (Platform Toolset = 'v1
40') cannot be found. To build using the v140 build tools, please install v140
build tools.  Alternatively, you may upgrade to the current Visual Studio tools
 by selecting the Project menu or right-click the solution, and then selecting
"Upgrade Solution...". [C:\temp\vs2015_simplest\ConsoleApplication1\ConsoleAppl
ication1\ConsoleApplication1.vcxproj]

    0 Warning(s)
    1 Error(s)

Time Elapsed 00:00:00.14

c:\>

解决了:

环境变量VisualStudioVersion设置为12.0而不是14.0将该值更改为14.0解决了该问题。

The simple console application started to work immediately after the Environment variable VisualStudioVersion changed and after windows logout, login.

The original project still couldn't be build after changing environment variable VisualStudioVersion. A retarget solution context menu appeared in Visual Studio 2015. So I retarget the solution. After retargeting the solution still couldn't be compiled (v140 not found). Finally I changed the platform toolset from v140 (not installed) to Visual Studio 2015 (v140). Now the solution can be compiled from Visual Studio and MSBuild as well.

Ross Ridge

您的问题是将环境变量设置VisualStudioVersion12.0这告诉MSBuild使用Visual Studio 2013(V120)工具,该工具不支持Visual Studio 2015(V140)生成工具。如果您取消设置此环境变量,或将/p:VisualStudioVersion=14.0选项传递给MSBuild,则应进行构建。(或至少克服此错误)。

您可以在MSDN博客条目“ Visual Studio项目兼容性和VisualStudioVersion ”中找到有关VisualStudioVersion变量的更多信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何强制cmake使用Visual Studio 2015(v140)平台工具集?

在Microsoft托管的Azure Devops构建管道代理上安装Visual Studio 2015工具包(v140)

Visual Studio 2017:工具集v140的vcvars

如何在Windows 7上将DirectX 11与Visual Studio 2015工具集v140一起使用

在Visual Studio项目中使用在vs80(Visual Studio 2005)下编译的C ++的静态库在c ++ vs140(Visual Studio 2015)下编译的

C#Net无法发布项目,在Visual Studio 2015中成功构建

无法在Visual Studio 2015中加载C项目

平台工具集v140和v140_xp有什么区别?

如何使Visual Studio 2015 C ++项目与Visual Studio 2010兼容?

Visual Studio 2015:如何建立针对Visual C ++ v120的ATL专案

在Visual Studio 2019中使用v141平台工具集的C ++ / CX项目的构建失败

Visual Studio 2015 / C#6 / Roslyn无法在PCL项目中编译XML注释

从Visual Studio 2015无效清单发布C#项目

在Visual Studio 2015中以C ++ 98模式运行项目

如何从Visual Studio 2015 C ++项目中导出Makefile

缺少Visual Studio 2015 C#项目图标选项

无法在Visual Studio 2015中使用“ AT TIME ZONE”构建SQL Server项目

Visual Studio 2015的项目模板

Visual Studio 2015无法识别C#7.0语法

Visual Studio 2015 C#XAML设计器无法加载

无法在设备上调试Android c ++应用(Visual Studio 2015)

无法卸载Visual Studio 2015

无法在Visual Studio 2015中运行多个启动项目

无法在Visual Studio 2015中创建新项目

Visual Studio 2015无法为Cordova项目创建发布版本

无法使用Visual Studio 2015建立天真项目

无法在 Visual Studio 社区 2015 中完全加载项目

无法使用Visual Studio 2015 Pro构建Boost 1.60

无法在Visual Studio 2015中构建通用应用