找不到适用于v120的构建工具(Platform Toolset ='v120')


103

分别在Windows 8 x64上使用Visual Studio 2012是由msbuild移入.net引起的,但我尚未看到如何修复它。

4>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.Cpp.Platform.targets(44,5): error MSB8020: The builds tools for v120 (Platform Toolset = 'v120') cannot be found. To build using the v120 build tools, either click the Project menu or right-click the solution, and then select "Update VC++ Projects...". Install v120 to build using the v120 build tools.    
2>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.Cpp.Platform.targets(44,5):
error MSB8020: The builds tools for v120 (Platform Toolset = 'v120') cannot be found. To build using the v120 build tools, either click the Project menu or right-click the solution, and then select "Update VC++ Projects...". Install v120 to build using the v120 build tools.    
5>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.Cpp.Platform.targets(44,5): error MSB8020: The builds tools for v120 (Platform Toolset = 'v120') cannot be found. To build using the v120 build tools, either click the Project menu or right-click the solution, and then select "Update VC++ Projects...". Install v120 to build using the v120 build tools.

1
CLI提示:要使用preferred来构建任何解决方案PlatformToolset,您可以像这样(VS2013)覆盖它"\Program Files (x86)\MSBuild\12.0\Bin\MSBuild" .\path\to\MySolution.sln /p:PlatformToolset=v120(如果在PowerShell中,则放在&之前\Progr..)。对于VS2015,就会变得"\Program Files (x86)\MSBuild\14.0\Bin\MSBuild"/p:PlatformToolset=v140等。
vulcan raven 2015年

Answers:


73

http://en.wikipedia.org/wiki/Visual_C++

您正在使用v110的Visual C ++ 2012。v120表示Visual C ++ 2013。

因此,您可以更改项目设置以使用工具集v110,或者在此计算机上安装Visual Studio 2013并使用VS2013对其进行编译。


70
但是,但是...即使我的计算机上安装了VS 2013,我也会收到此错误!
Tim Lovell-Smith

5
您解决了吗?我有类似的问题。如果从TFS Team Build构建,则会出现相同的错误。但是,我可以从VS 2013 IDE和VS 2013命令提示符下进行构建。
Ike Starnes

我在以下位置检查了安装在TFS Build Server上的软件列表:listofsoftwareontfshostedbuildserver.azurewebsites.net,我认为它可以在其中运行(我怀疑这应该可以构建,但还没有尝试)。我注意到VS 2013并未真正安装,只有一部分安装。
2014年

6
我在构建服务器上安装了VS 2013,但仍然有问题。
2014年

4
请注意,您的解决方案可能有多个项目。因此,通过右键单击项目(不是解决方案)->配置属性->常规
像素

84

如果安装了VS2013,但出现此错误,则可能是调用了错误的MSBuild。通过VS2013,Microsoft现在将MSBuild包含在Visual Studio中。有关详细信息,请参见此Visual Studio博客文章

特别要注意二进制文件的新位置:

在32位计算机上,可以在以下位置找到它们:C:\ Program Files \ MSBuild \ 12.0 \ bin

在64位计算机上,32位工具将位于以下位置:C:\ Program Files(x86)\ MSBuild \ 12.0 \ bin

以及下面的64位工具:C:\ Program Files(x86)\ MSBuild \ 12.0 \ bin \ amd64

MSBuild in %WINDIR%\Microsoft.NET\Framework\似乎无法识别VS2013(v120)平台工具集。


2
当我遇到OP中描述的相同问题时,这个答案对我来说是正确的答案。
Boinst 2014年

12
您如何更改MSBuild的路径?
rharrison33 2014年

您想做什么?
凯文·理查森

2
@ rharrison33当我使用VS2013命令提示符时,然后使用了正确版本的msbuild。运行VS2012命令提示符使用了错误的msbuild位置。不太确定为什么VS2013安装了VS2012命令提示符,但是要注意...
Jim Geurts 2015年

1
使用v120工具集进行构建时,在VS2012命令提示符下对我有用C:\Program Files (x86)\MSBuild\12.0\bin\MSbuild.exe
凯文·理查森

69

如果您使用的是Visual 2012,请右键单击项目名称->属性->配置属性->常规->平台工具集-> Visual Studio 2012(v110)


1
就我而言,这解决了它。我尝试使用VS2013,然后在回到VS2012时遇到了这个问题。请注意,您必须对解决方案中的每个项目都执行此操作。
J. Peterson

这篇带有解决方案和说明的帖子是如此清晰且易于理解。.修正了v110问题后,2012太糟糕了,仍然给我带来了很多错误。 2012年仍然可以找到错误。2012会减慢编码速度,这就是为什么我现在只使用2013的原因。
T. Webster

更改了平台工具集和Windows SDK版本。工作了!
菲拉特·埃斯默尔18-3-7


7

总结Kevin和Lex的答案:

在工作中,开发人员和构建服务器都具有Visual Studio2013。我们的解决方案具有VS 2013 C ++项目,并且在开发人员的计算机上或IDE中的构建服务器上构建时都可以很好地编译。问题在于使用TFS构建定义触发构建时。我们仍在使用旧的构建模板(版本11.1)而不是12.0。幸运的是,在模板xaml文件中添加了简单的属性即可解决此问题。在“编译项目”的“序列”部分中,有一个以以下内容开头的xaml节点:

mtbwa:MSBuild CommandLineArgument=....

您可以根据Kevin的答案添加“ ToolPath”属性,并将其指向要调用的MSBuild.exe的正确路径。例如:

ToolPath="C:\Program Files (x86)\MSBuild\12.0\Bin"


4

浪费了4个小时以上。

我有Visual Studio 2017 Enterprise,其中一个项目出现以下错误:

找不到适用于v120的构建工具(Platform Toolset ='v120')

要解决以上错误,我尝试安装以下所有产品:

但是,以上方法均无效。

后来,安装了Visual Studio 2013 Ultimate,然后一切正常。

看起来,较旧的Visual Studio是解决此问题的必备工具。

希望能帮助到你。


3

在VS2015中打开VS2013 C ++项目时,出现警告“找不到v120的构建工具...”,我只需要编辑.vcxproj文件并更改<PlatformToolset>v120</PlatformToolset><PlatformToolset>v140</PlatformToolset>,然后关闭并重新打开解决方案。


1

在VS 2012中,我收到“无法构建SMB2:错误1错误MSB8020:找不到用于Visual Studio 2010的构建工具(Platform Toolset ='v100')。要使用v100生成工具进行生成,请单击“项目”菜单或右键单击解决方案,然后选择“更新VC ++项目...”。安装Visual Studio 2010以使用Visual Studio 2010生成工具进行生成。

小心翼翼,我尝试了以下建议:在“解决方案资源管理器”中选择“解决方案”,然后单击“更新VC ++”菜单项。这进行了一些更新,然后开始了成功的构建。

解决方案菜单中不再显示“ Update VC ++”菜单项。


1

删除VS 2013社区更新5并切换到VS 2015社区版时,我遇到了类似的问题

以及在Windows Phone 8.1项目中遇到的问题,其中抱怨缺少正确的msbuild工具集,并且没有安装仿真器。

我知道问题的根源是最后一次卸载留下的VS 2013社区设置,即使卸载过程顺利进行且控制面板没有问题,这也使我感到困惑。

我尽力删除了所有剩余的文件,但总有一些东西留下。

而且对我来说唯一解决的是全新的Windows 10 x64安装,然后在我安装VS 2015社区版之后,就是这样!对我来说没有更多的错误,并且wp8.1模拟器也可以正常工作!!

就我而言,现在完全可以确定以前的Visual Studio安装设置对我来说是一团糟,因为我没有找到任何方法来尝试完全擦除VS 2013社区文件和设置,所以我必须为此付出代价并重新安装我的操作系统。

如果您可以找到一种方法来完全擦除上一个Visual Studio安装文件,则可以避免重新安装OS。

PS:只有先尝试了所有可能的方法后,才尝试此解决方案(重新安装OS),然后如果没有任何效果,则只能这样做... ...作为最后的解决方法。


通过全新安装 VS 2015社区获得此错误。Microsoft没有用于x64的正确路径。
Michaelangel007

0

在VS2013中设置所有项目以使用正确的构建工具,您可以在解决方案资源管理器中右键单击解决方案,然后选择“重新定位解决方案”。它将更改所有项目(所有操作都将在打开的对话框中选中该复选框),因此错误将消失。


试过了。对于我的VS Community 2015而言,这无济于事。:-/
Michaelangel007

0

就我而言,我双击了Visual 2013 sln文件并打开了Visual 2012(而不是Visual 2013)。尝试使用Visual 2012进行编译时,将Platform Toolset设置为“ v120”的项目显示了上述错误。但是,使用Visual 2013重新打开sln时,Platform Toolset设置为“ Visual Studio 2013(v120)”-这次请注意全名-确实为我完成了这项工作。该项目现在编译良好。


0

在VS2015中构建USBView项目时遇到了相同的错误。我选择“平台工具集”设置为“ Visual Studio 2015(v140)”,然后右键单击解决方案(在VS2015中),然后选择“重新定位解决方案”,然后在该对话框上选择了10.0.10240.0,以消除此错误。

似乎还有Microsoft的ProjectUpgradeTool,它可以将较旧的项目转换为要升级到VS2012 VS后的版本,但我无法在我的机器上找到该工具。

我仍然需要借助this来修复一些新的链接器错误。


0

我有一个类似的问题。VS 2015社区(MSBuild 14)正在构建一个c ++应用程序,希望使用VS 2010(v100)工具。这一切都给了msbuild一个无效的配置选项。奇怪。

因此,请重新检查所有这些选项和参数。


0

如果使用cmake,JUCE等 make生成器,请尝试设置正确的VS版本目标(2013、2015、2017),然后重新生成解决方案


0

在构建一些项目时,我面临着同样的问题。

我使用了Visual Studio 2015 IDE,在这里工作正常,但是从PowerShell脚本进行构建时,它提供了与工具集相关的“找不到v140的构建工具(Platform Toolset ='v140')。” 错误

因此最终是针对各个项目指向不正确的MSBUILD exe的问题。

之前我指向$ MSBUILD =“ C:\ windows \ Microsoft.NET \ Framework \ v4.0.30319 \ MSBuild.exe

当我更新脚本以指向$ MSBUILD =“ C:\ Program Files(x86)\ MSBuild \ 14.0 \ Bin \ MSBuild.exe”时,构建成功

因此,要解决此问题,请确保使用正确的MSBUILD。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.