如何将VC++6.0项目升级到VS2010?
How to upgrade a VC++6.0 project to VS2010?
我有使用 VC++6.0 编写的基于 MFC 对话的应用程序。由于我的工作环境要求,我需要升级到 Visual Studio 2010。我不需要添加任何新功能,只需使用升级后的 visual studio 进行编译即可。
任何人都可以指导我吗?
所有的主要要求是什么以及如何开始?
只需在 VS-2010 中打开 project/solution。转换并编译。
根据您的代码,您可能会得到一些编译器 warnings/errors,因为新的编译器更精确。
但大多数转换只会导致视图警告,例如安全问题和其他问题,应该可以直接工作。
来自 VC++ 团队博客和 Visual Studio 2010 C++ Project Upgrade Guide:
在 Visual Studio 2010 年,C++ 构建系统从 VC基于构建的系统迁移到基于 MSBuild 的构建系统。
C++ 项目系统也是建立在 MSBuild 构建系统之上的。
在升级过程中,您可能 运行 遇到一些限制、已知问题或设计更改。
VS2010 支持从 VC6、VS2002、VS2003、VS2005 和 VS2008 升级。
与 Visual Studio 的早期版本一样,升级可以通过 IDE 转换向导或从命令行 (Devenv.exe /upgrade
) 完成。
以下是升级应用程序的建议:
1) 设置与构建环境相同的升级环境
升级过程将尝试在升级过程中加载文件和评估值。如果您的项目使用了项目文件本身未定义的值,例如环境变量定义的值,则需要在升级之前设置这些环境变量。如果没有正确设置这些环境变量,您可能会收到由未计算值引起的转换警告或错误。
2) 确保在升级之前安装了所需的平台
在没有项目所有可用平台的机器上转换项目将导致转换错误。例如,如果您尝试在不支持 Itanium 平台的 Visual Studio Professional SKU 上使用 Itanium Platform 转换项目,您将看到如下转换错误:
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 工具集构建来利用此功能。这有助于将任何项目 system/build 系统相关问题与升级后可能 运行 引起的工具问题隔离开来。这将使向 VS2010 工具集的迁移更加顺利。
升级后,属性 sheet 文件 (.vsprops) 将转换为其新格式 (.props)。同样,项目文件 (.vcproj) 将转换为其新格式 (.vcxproj)。请注意,新项目文件是与旧项目文件一起生成的。转换期间还会生成新的文件类型 (.filter.vcxproj)。过滤器文件包含用于在解决方案资源管理器中显示文件夹的信息。此过滤器信息最初是项目文件的一部分。此更改是必要的,因为只要项目文件发生更改,MSBuild 就会请求重建。通过将过滤器信息存储在单独的文件中,可以在不触发整个项目重建的情况下更改过滤器。
注意:升级过程不会转换.user 文件。因此,您的调试和部署设置在转换后将不会保留。
在VS2010中,引入了一个新的命令行升级工具,VCUpgrade.exe。此命令行工具适用于升级只有一个项目的应用程序,因为它不能将解决方案文件作为输入并将解决方案信息解析为项目文件。 VCUpgrade.exe 位于:$(VSInstallDir)\common7\Tools 目录。该工具也将在下一个版本的WinSDK中发布,这样用户就可以在没有Visual Studio IDE.
的情况下对WinSDK中发布的项目文件进行命令行升级。
我有使用 VC++6.0 编写的基于 MFC 对话的应用程序。由于我的工作环境要求,我需要升级到 Visual Studio 2010。我不需要添加任何新功能,只需使用升级后的 visual studio 进行编译即可。
任何人都可以指导我吗?
所有的主要要求是什么以及如何开始?
只需在 VS-2010 中打开 project/solution。转换并编译。
根据您的代码,您可能会得到一些编译器 warnings/errors,因为新的编译器更精确。
但大多数转换只会导致视图警告,例如安全问题和其他问题,应该可以直接工作。
来自 VC++ 团队博客和 Visual Studio 2010 C++ Project Upgrade Guide:
在 Visual Studio 2010 年,C++ 构建系统从 VC基于构建的系统迁移到基于 MSBuild 的构建系统。
C++ 项目系统也是建立在 MSBuild 构建系统之上的。
在升级过程中,您可能 运行 遇到一些限制、已知问题或设计更改。
VS2010 支持从 VC6、VS2002、VS2003、VS2005 和 VS2008 升级。
与 Visual Studio 的早期版本一样,升级可以通过 IDE 转换向导或从命令行 (Devenv.exe /upgrade
) 完成。
以下是升级应用程序的建议:
1) 设置与构建环境相同的升级环境
升级过程将尝试在升级过程中加载文件和评估值。如果您的项目使用了项目文件本身未定义的值,例如环境变量定义的值,则需要在升级之前设置这些环境变量。如果没有正确设置这些环境变量,您可能会收到由未计算值引起的转换警告或错误。
2) 确保在升级之前安装了所需的平台
在没有项目所有可用平台的机器上转换项目将导致转换错误。例如,如果您尝试在不支持 Itanium 平台的 Visual Studio Professional SKU 上使用 Itanium Platform 转换项目,您将看到如下转换错误:
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 工具集构建来利用此功能。这有助于将任何项目 system/build 系统相关问题与升级后可能 运行 引起的工具问题隔离开来。这将使向 VS2010 工具集的迁移更加顺利。 升级后,属性 sheet 文件 (.vsprops) 将转换为其新格式 (.props)。同样,项目文件 (.vcproj) 将转换为其新格式 (.vcxproj)。请注意,新项目文件是与旧项目文件一起生成的。转换期间还会生成新的文件类型 (.filter.vcxproj)。过滤器文件包含用于在解决方案资源管理器中显示文件夹的信息。此过滤器信息最初是项目文件的一部分。此更改是必要的,因为只要项目文件发生更改,MSBuild 就会请求重建。通过将过滤器信息存储在单独的文件中,可以在不触发整个项目重建的情况下更改过滤器。
注意:升级过程不会转换.user 文件。因此,您的调试和部署设置在转换后将不会保留。 在VS2010中,引入了一个新的命令行升级工具,VCUpgrade.exe。此命令行工具适用于升级只有一个项目的应用程序,因为它不能将解决方案文件作为输入并将解决方案信息解析为项目文件。 VCUpgrade.exe 位于:$(VSInstallDir)\common7\Tools 目录。该工具也将在下一个版本的WinSDK中发布,这样用户就可以在没有Visual Studio IDE.
的情况下对WinSDK中发布的项目文件进行命令行升级。