19

我在 Visual Studio 2010 上创建了一个项目。当我尝试在 Visual Studio 2015 社区版上运行该项目时,出现以下错误,

严重性代码 描述 项目文件行错误 MSB8020 找不到 Visual Studio 2010 (Platform Toolset = 'v100') 的构建工具。要使用 v100 构建工具进行构建,请安装 Visual Studio 2010 构建工具。或者,您可以通过选择“项目”菜单或右键单击解决方案,然后选择“重新定位解决方案”来升级到当前的 Visual Studio 工具。图形 C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.Cpp.Platform.targets 55

当我尝试使用 Visual Studio 2015 构建工具构建它时,我遇到了大约 1500 多个错误。

在此处输入图像描述

有什么方法可以使项目工作吗?

4

2 回答 2

25

如果您无法安装 VS2010,Windows 7 的 Windows SDK包含所需的编译器工具 (v100),您实际上可以跳过安装 SDK 本身并仅安装编译器工具、头文件和库。请注意,Windows SDK 中包含的编译器与 VS2010 的编译器相同,但 VS2010 SP1 的编译器更新一些。如果需要,还需要为 Windows SDK 7.1 安装 Microsoft Visual C++ 2010 Service Pack 1 Compiler Update。但请注意,如果您安装这些,如果您决定安装 VS2010,以后可能会遇到问题,安装程序中存在要求您严格按照顺序安装组件的错误。另外,如果你的代码使用 MFC 或 ATL,你必须安装 VS2010,安装 Windows SDK 是不够的。

于 2016-01-19T20:21:47.987 回答
10

您要么安装 VS 2010 并构建您的项目,要么升级您的项目。VS 2015 自定义安装选项将允许您安装v120平台工具集,但不能安装v110或平台工具集v100

VS 2015 的一个主要变化是,C++ 工具(即v140不是通过典型安装选项安装的。请参阅Visual C++ 团队博客

请记住,Visual C++ 2010 使用 C++0x 草案标准,Visual C++ 2015 符合 C++11 标准,但 Expression SFINAE 除外(部分存在于Update 1中),因此在其间的几年包括一些重大变化。由于您要同时跳过三个主要版本(大约 10 个次要更新),因此可能会有点不知所措,尤其是在处理所有新警告时。

要记住的另一件事是,Visual C++ 2010 使用 Windows 7.1 SDK,而 Visual C++ 2012 或更高版本使用 Windows 8.x SDK。那里也发生了很多变化,特别是对于 DirectX 开发。对于 Windows 桌面应用程序来说,_WIN32_WINNT为目标平台设置预处理器定义尤为重要,因为 Windows 8.x SDK 不像早期的 Windows SDK 那样默认为“最旧的支持平台”。请参阅使用 Windows 标头

VS 2010 和v100工具集支持面向 Windows XP 和 Windows Server 2003。v140工具集不支持面向 Windows XP / Server 2003。您必须改用v140_xpPlatform Toolset。有关一些说明,请参阅这篇文章,因为这意味着您再次使用 Windows 7.1 SDK 而不是带有_xp工具集的 Windows 8.x SDK。

请参阅Visual C++ 2012中的重大更改、Visual C++ 2013中的重大更改和 Visual C++ 2015 中的重大更改

另请参阅对 C++11/14/17 功能的支持(现代 C++)DirectX SDK 在哪里?.

如果您需要同时使用 VS 2010 和 VS 2015 构建代码,那么您应该创建两个项目/解决方案文件,每个文件一个。您可能还想阅读这篇文章,了解有关编写可以使用多个 Visual C++ 工具集构建的代码的一些注意事项,由于 Windows SDK 的更改,这再次特别具有挑战性。

VS 2015 支持面向 Windows Vista SP2、Windows 7 SP1、Windows 8.0、Windows 8.1、Windows 10 和可选的 Windows XP SP3。它支持面向 Windows Vista RTM、Windows Vista SP1 或 Windows 7 RTM。

于 2016-01-19T20:04:00.760 回答