MSbuild错误:找不到v140(平台工具集='v140')的构建工具。

27

我有一个方案,其中包含大量的项目(C++和C#)。我将该解决方案升级到VS2015,因此大多数项目的工具集版本现在设置为V140,但是一小部分项目需要保持在V110(第三方库等)。当我在Visual Studio 2015中构建解决方案时,它可以正常构建,但是当TeamFoundationServer尝试构建时,出现以下错误:

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

我尝试指定VisualStudioVersion或正确的MSBuild版本路径作为构建参数,但这样做会影响其余使用V110的项目。

非常感谢任何帮助。


8个回答

62

我遇到了同样的问题。这个解决方案中提供的步骤帮助我解决了我的问题。为了以后参考,这里再次列出这些步骤。

如果您正在尝试构建一个Win32“桌面”应用程序,获取v140平台工具集的最简单方法是通过Visual Studio Installer(请参见下面的图像,了解步骤“3。”和“4.”的说明):

  1. 从开始菜单启动“Visual Studio Installer”。
  2. 选择您已安装的Visual Studio 2017实例的“修改”选项。
  3. 在工作负载选择器的“摘要”面板下,展开“使用C++进行桌面开发”(如果它已折叠)
  4. 勾选“VC++ 2015.3 v140 工具集(x86,x64)”可选功能。

步骤‘3.’和‘4.’的说明图


任何人如果对图像中的步骤感到困惑,请注意:第4步是重要的步骤,但在图像中没有显示。此外,可以参考Visual Studio官网上的链接:https://developercommunity.visualstudio.com/content/problem/48806/cant-find-v140-in-visual-studio-2017.html。或者只需在搜索框中输入“140”。 - T.S
3
我没有找到“VC++ 2015.3 v140 工具集(x86,x64)”,也没有搜索框可以搜索。您可以进入“单个组件”并手动搜索,它应该在“编译器、构建工具和运行时”类别下。 - E235

7

构建工具为v140,这是VS2015的平台工具集。

如果您正在使用TFS2015,则必须确保构建机器上的构建环境与本地开发人员机器相同。您应该在构建机器上安装VS2015。

如果您正在使用TFS2013或TFS2012,则最可能调用MSBuild 12.0。您需要将构建模板设置为指向MS Build版本14.0。有关详细信息,请查看:TFS 2013 building .NET 4.6 / C# 6.0


1
需要安装VS2015吗?我正在尝试使用MS Build Tools for 2015进行构建,但仍然遇到错误。 - dhiraj suvarna

4

Jacob的答案对我有用,但是C++构建工具在Windows 10上的VS 2019安装程序中,而我使用的是VS Build Tools 2017,截至2019年7月。


3
如果您正在使用Visual Studio 2022 Build Tools,则以下PowerShell脚本可以解决此问题:
$VS_BTOOLS_EXE="vs_buildtools.exe"
$VS_BTOOLS_URI="https://aka.ms/vs/17/release/vs_buildtools.exe"
Invoke-WebRequest -Uri $VS_BTOOLS_URI -OutFile $VS_BTOOLS_EXE
Start-Process -FilePath ./vs_BuildTools.exe -ArgumentList `
     "--add", "Microsoft.VisualStudio.Component.VC.140", `
     "--quiet", "--norestart", "--force", "--wait" -Wait -PassThru

当需要进行静默安装时非常有用。


感谢您提供这个复制粘贴的答案。对于我的使用情况,一个旧的Windows 7框无法进行请求,因为默认设置为TLS v1.0,而服务器需要TLS v1.2,所以根据我所了解的,以下SO答案中的复制粘贴允许此面食工作:https://dev59.com/1FgR5IYBdhLWcg3wLq5n#66614041 - ipatch
我可以在像GitHub Actions这样的CI环境中运行吗?还是应该通过某种msbuild方式自动重新定位? - undefined

2
对于那些试图使用 Visual Studio Build Tools 2022 进行相同操作的人,当选择 使用C++进行桌面开发 工作负载时,你可能会在 Optional 下找到它。另外,我必须更新环境变量中以下变量的值,以指向新位置:
  1. PATH:用 C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\MSBuild\Current\Bin 替换先前的 BuildTools 路径。
  2. VCTargetsPathC:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\MSBuild\Microsoft\VC\v170\
  3. VS140COMNTOOLSC:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\ 注意:我不需要更改该值。但是这个设置对我来说是必要的。
注意:路径可能会因安装的 VS 版本而有所更改,例如如果你正在使用 VS 2022 64位专业版,则变量可能如下所示:
  1. PATH: C:\Program Files\Microsoft Visual Studio\2022\Professional\MSBuild\Current\Bin(路径)
  2. VCTargetsPath: C:\Program Files\Microsoft Visual Studio\2022\Professional\MSBuild\Microsoft\VC\v170\(路径)

Visual Studio Build Tools 2022


1
我已经安装了v140组件,但是VS2022仍然抱怨在项目设置中找不到VS2015(V140)平台工具集。你是通过VS设置、命令环境还是注册表来修复变量的? - rboy
我在“控制面板>系统>编辑环境变量”中添加了环境变量。 - user007
谢谢,我试过了(使用VS2022 x64专业版路径略有不同),但是在尝试构建时仍然出现错误MSB8020 The build tools for 'v140' application Type UWP (Platform Toolset = 'Visual Studio 2015') cannot be found. Please install the workflow for this application type and include the build tools for the C:\Program Files\Microsoft Visual Studio\2022\Professional\MSBuild\Microsoft\VC\v170\Microsoft.CppBuild.targets 443。有什么想法吗? - rboy
你能确认文件是否存在于你的VCTargetsPath文件夹中吗?我已经更新了我的新文件路径,我会在答案中进行编辑。我新笔记本电脑中的当前值如下: 路径:C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin VS140COMNTOOLS:C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools VCTargetsPath:C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\VC\v170 - user007

2

你正在尝试使用不同于当前系统未安装或项目无法使用的版本的构建工具集进行构建。要将其更改为您已在系统上安装的工具集,请右键单击解决方案资源管理器中的项目。

进入“属性”。配置属性 > 常规 > 平台工具集 > (更改为系统上安装的工具集)。 确保对Debug和Release版本都进行了更改。


0

Jacob的答案对我有用,但是我必须点击顶部的“个别组件”选项卡进行第三步。

图片


-2

5
欢迎来到 Stack Overflow!回答问题时,包括解决问题所需的信息非常重要--发布超链接是可以的,但仅凭此还不足够(因为链接页面可能最终会消失)。 - jkdev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接