Visual Studio 2013,错误 MSB8020:找不到 Visual Studio 2010 的构建工具

Visual Studio 2013, error MSB8020: The build tools for Visual Studio 2010 cannot be found

一开始我想指出,我花了一些时间研究这个问题,并且针对类似问题的建议解决方案 对我没有帮助。


问题背景

我需要将一个 Firebreath 插件项目(我之前没有处理过)从 PC_1 迁移到 PC_2。

据我所知,该项目于 Visual Studio 2010 PC_1 开始,后来移至 Visual Studio 2013 Pro .有一个解决方案包含 19 个项目。我有一条说明说,为了获得插件安装程序,我应该首先构建 project_x,然后再构建 project_y_WiXInstall。这两个步骤在这台机器上都没有任何问题。

然后是 PC_2,在我开始使用它之前安装了 Visual Studio 2015 Community。我已经删除了它,安装了 Visual Studio 2013 Pro(版本 12.0.21005.1 REL - 与 PC_1 完全相同),移动了所有需要的文件,我试图摆脱所有编译错误。到目前为止,我发现我必须安装 Cmake 2.8、Windows Driver Toolkit 7.1 并手动覆盖 incorrect VCTargetsPath MSBuild variable

问题描述

目前,当我尝试在新机器上编译项目时,我得到 these two errors(这是一张图片 link,因为我还不能在此帐户上嵌入图片)。我不确定第一条错误消息是怎么回事,因为它看起来不完整并且文件 CUSTOMBUILD 不存在,但我并没有太在意它,因为我修复的上一个编译错误也有类似的 "artifact" 作为第一个错误,在修复第二个错误后它就消失了。

第二个报错信息覆盖的部分是项目路径。错误来源(Microsoft.Cpp.Platform.targets 文件,第 64 行)如下所示:

<!-- Error out if toolset does not exists in Visual Studio 2010 or 2012 -->
<VCMessage Code="MSB8020" Type="Error" Arguments="$(_CurrentPlatformToolsetShortName);$(PlatformToolset)" Condition="'$(ToolsetTargetsFound)' != 'true'" />

什么没有帮助

  1. 错误描述建议使用Upgrade Solution...选项,但是我右击解决方案时没有这个选项
  2. 作为我在 post 开头提出的问题的公认答案,我检查了所有 19 个项目的属性(包括项目 ZERO_CHECK) 但他们的平台工具集已经设置为 Visual Studio 2013 (v120).
  3. 我还尝试将所有项目的平台工具集更改为 inherit from parent or project defaults。这导致它切换到 Visual Studio 2010 (v100) (not installed),然后我右键单击项目并选择 Upgrade VC++ compiler and libraries。在此之后,平台工具集又回到了 Visual Studio 2013 (v120),但它对编译错误没有帮助。
  4. 作为我在 post 开头建议的问题的一个不被接受的答案,我尝试搜索所有出现的 10.0V100 在我所有的 .vcxproj 文件中替换它们,但我没有发现它们的任何出现。

[编辑]

我刚想尝试从命令行使用 MSBuild 构建项目。与 Visual Studio 中的错误相比,这里有更多信息,因此可能有助于解决问题:https://pastebin.com/JhN3dXM3

所以您在这里缺少的是 FireBreath 项目是使用 CMake 构建的——构建目录的实际内容应该始终是完全临时的,并且永远不会存储在源代码管理中。要在新计算机上构建项目,您需要从头开始再次 运行 准备命令。

如果之前的维护者手动更改构建文件 and/or 将其迁移到更新版本的 visual studio 而不使用 cmake 来完成,那么他们做了一些非常丑陋的事情并且所有赌注都被取消了。 ..祝你好运。

这就是为什么所有的 firebreath 文档(我写了大部分)都强烈要求构建目录是临时的,并且您总是在 cmake 中更新项目文件。

希望对您有所帮助!