如何将 VC++6.0 项目升级到 VS2010?

Posted

技术标签:

【中文标题】如何将 VC++6.0 项目升级到 VS2010?【英文标题】:How to upgrade a VC++6.0 project to VS2010? 【发布时间】:2015-04-22 05:20:18 【问题描述】:

我有用 VC++6.0 编写的基于 MFC 对话的应用程序。由于我的工作环境要求,我需要升级到 Visual Studio 2010。我不需要添加任何新功能,只需使用升级后的 Visual Studio 编译即可。

有人可以指导我吗?

所有主要要求是什么以及如何开始?

【问题讨论】:

将旧的 VC6 项目转换为 VS2010 项目应该可以顺利进行。 AFAIK没有要求。只需从 VS2010 打开 .dsw 文件即可。 你的意思是要使用VS2010提供的所有“新功能”还是只是在VS2010上打开你的项目? 是的。我想在新环境下构建和运行。除了我现有的功能不应该影响。 【参考方案1】:

只需在 VS-2010 中打开项目/解决方案。转换并编译。

您可能会收到一些编译器警告/错误,具体取决于您的代码,因为新的编译器更加精确。

但是大多数转换只会导致查看警告,例如安全性内容和其他内容,并且应该直接起作用。

【讨论】:

【参考方案2】:

来自 VC++ 团队博客和Visual Studio 2010 C++ Project Upgrade Guide:

在 Visual Studio 2010 中,C++ 构建系统从 基于 VCBuild 的系统转移到基于 MSBuild 的构建系统。 C++ 项目系统也建立在 MSBuild 构建系统之上。 在升级过程中可能会遇到一些限制、已知问题或设计更改。 VS2010支持从VC6、VS2002、VS2003、VS2005、VS2008升级。 与以前版本的 Visual Studio 一样,可以通过 IDE 转换向导或从命令行 (Devenv.exe /upgrade) 进行升级。

以下是升级应用程序的建议:

1) 将升级环境设置为与构建环境相同

升级过程将尝试在升级过程中加载文件并评估值。如果您的项目使用项目文件本身未定义的值,例如环境变量定义的值,则需要在升级之前设置这些环境变量。如果没有正确设置这些环境变量,您可能会收到转换警告或未计算值导致的错误。

2) 确保在升级前安装了所需的平台

在没有项目的所有可用平台的机器上转换项目将导致转换错误。例如,如果您尝试在不支持 Itanium 平台的 Visual Studio Professional SKU 上转换具有 Itanium 平台的项目,您将看到如下转换错误:

Failed to upgrade 'Debug|<Itanium>'. Please make sure you have the corresponding platform installed under
'%vctargetspath%\platforms\Itanium'. Cannot load the project due to a corrupt project file. The following error
has occurred during XML parsing:
File: D:\Sample\ConsoleApp\ConsoleApp.vcproj
Line: 28
Column: 5
Error Message:
System error: -2147154677.
The file 'D:\Sample\ConsoleApp\ConsoleApp.vcproj' has failed to load.

这是设计使然,因为转换需要评估缺失平台中的属性才能成功转换。您可以通过查看以下目录来验证您的机器上安装了哪些平台:%ProgramFiles%\MSBuild\Microsoft.cpp\V4.0\Platforms(或 x64 机器上的 %ProgramFiles(x86)%\MSBuild\Microsoft.cpp\V4.0\Platforms)表示机器上安装的平台。

3) 如果可能,首先使用原生多目标针对 VS2008 工具集进行构建

在 VS 2010 中,添加了原生多目标,它允许您使用新的基于 MSBuild 的项目系统在 VS2010 IDE 中针对 Visual Studio 2008 工具集进行构建。我建议您在升级时首先使用 VS2010 构建 VS2008 工具集来利用此功能。这有助于将任何与项目系统/构建系统相关的问题与升级后可能遇到的工具问题隔离开来。这将使迁移到 VS2010 工具集更加顺畅。 升级后,属性表文件 (.vsprops) 将转换为其新格式 (.props)。同样,项目文件 (.vcproj) 将转换为其新格式 (.vcxproj)。请注意,新项目文件是与旧项目文件一起生成的。转换过程中还会生成新的文件类型 (.filter.vcxproj)。过滤器文件包含用于在解决方案资源管理器中显示文件夹的信息。此过滤器信息最初是项目文件的一部分。此更改是必要的,因为每当项目文件更改时,MSBuild 都会请求重新构建。通过将过滤器信息存储在单独的文件中,可以在不触发整个项目的重建的情况下更改过滤器。

注意:升级过程不会转换 .user 文件。因此,您的调试和部署设置在转换后将不会保留。 VS2010引入了新的命令行升级工具VCUpgrade.exe。此命令行工具适用于升级只有一个项目的应用程序,因为它无法将解决方案文件作为输入并将解决方案信息解析到项目文件中。 VCUpgrade.exe 位于:$(VSInstallDir)\common7\Tools 目录。该工具也将在WinSDK的下一个版本中提供,以便用户可以在没有Visual Studio IDE的情况下对WinSDK中提供的项目文件进行命令行升级。

【讨论】:

以上是关于如何将 VC++6.0 项目升级到 VS2010?的主要内容,如果未能解决你的问题,请参考以下文章

为啥同样的C程序在VC++6.0可以运行,在VS2010就不可以?

从 Visual Studio C++ 6.0 到 VS 2008?

如何使用 Daffodil 将旧的 VC6 项目移动到 VS2010

VC6.0或VS2010对图片操作

vc6.0 怎么办?, 一直出现这个Error spawning 在线求解

在调试模式下尝试将预编译头文件与 VS2010 (VC100) 一起使用时,如何消除错误 C2859?