主题:升级到VS2010指南
如何从目前正在使用VC平滑升级到VS2010相信是很多开发者都比较关心的问题,一方面担心自己在新的平台下需要长时间的学习;另一方面对于以前在VC中使用的如何平滑过渡到VS2010还有很多不确实的因素。在这里需要告诉大家的是VS2010相比之下比VC6等有着更人性化的操作以及界面,可以让大家更快、更便捷的使用VS2010,同时对于VC过渡到2010其实也没有想象中的那么复杂。本文将为大家介绍Visual Studio 2010中C++项目升级的有关问题,这篇文章的目的主要也是为了在你升级到VS2010的过程中,能给你一些指导,解释一些问题。
Visual Studio 2010支持来自VC6、Visual Studio 2002、Visual Studio 2003、Visual Studio 2005和Visual Studio 2008的升级。同Visual Studio的早期版本一样,你可以选择通过IDE的转换向导或者是命令行工具(Devenv/upgrade)来完成升级。
[img]http://photo9.zxip.com/albums9/folder29/22909/20101108085713/20101122124616100.jpg[/img]
以下是升级过程中的一些建议:
1) 把升级环境与构建环境设置成相同的。
升级过程中会尝试加载一些文件,另外还会评估一些值。如果你的项目中所使用的值不是在项目文件中自己定义的,例如在环境变量中定义的值,那就需要在升级之前事先设置好这些环境变量。如果这些环境变量设置不当,则可能会因为无法对值进行评估而出现警告或错误。
2) 在升级之前确保你已经安装了必要的平台。
在一台没有可用平台的机器上对项目进行转换,可能会导致转换错误。例如,如果你想在Visual Studio Professional SKU中对安腾平台的一个项目进行转换,由于它不支持安腾平台,你就会看到像下面这样的转换出错信息:
Failed to upgrade 'Debug|'. 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) 如果可能的话,使用本地的多定向支持来对Visual Studio 2008工具集进行构建。
在Visual Studio 2010中,我们新增了本地的多定向支持(Multi-Targeting),通过使用新的基于MSBuild的项目系统,你可以在Visual Studio 2010的IDE中为Visual Studio 2008工具集构建目标。关于这一特性,你可以看看这篇博客。我们建议用户,特别是拥有大型代码库的用户,在升级时先利用这一特性在Visual Studio 2010中构建Visual Studio 2008工具集的程序。这样,当你在升级过程中碰到问题,就可以把那些跟项目系统或构建系统相关的问题与工具的问题区别开来。这将会让你更加平滑地升级到Visual Studio 2010 工具集。
一旦升级完成,属性表文件(.Visual Studio props)就会被转换成新的格式(.props)。同样,项目文件(.vcproj)也会被转换为新的格式(.vcxproj)。值得注意的是,新的项目文件会与旧的项目文件同时生成。在转换过程中还产生了一种新的文件类型(.filter .vcxproj),该过滤器文件包含用来显示解决方案的资源管理器文件夹信息。该过滤器信息原本是项目文件的一部分,然而这种变化是必要的,因为只要项目文件发生变化,MSBuild就会请求重新构建。通过在一个单独的文件中保存过滤器信息,就可以在避免重新构建整个项目的情况下修改过滤器。
注意:升级过程不会转换.user文件。因此,你的调试和部署设置在转换后将不会被保留。
在Visual Studio 2010中,一个新的命令行升级工具 VCUpgrade.exe也被加入了进来。此命令行工具,适合在只有一个项目的情况下进行升级,因为它无法把解决方案文件作为输入,并将其解析成项目文件。VCUpgrade.exe位于 $(Visual Studio InstallDir)\ common7 \ Tools目录下,该工具也将附带在WinSDK的下一个版本中,这样用户就可以在没有Visual Studio IDE的情况下用命令行对WinSDK中的项目文件进行升级。
Visual Studio 2010支持来自VC6、Visual Studio 2002、Visual Studio 2003、Visual Studio 2005和Visual Studio 2008的升级。同Visual Studio的早期版本一样,你可以选择通过IDE的转换向导或者是命令行工具(Devenv/upgrade)来完成升级。
[img]http://photo9.zxip.com/albums9/folder29/22909/20101108085713/20101122124616100.jpg[/img]
以下是升级过程中的一些建议:
1) 把升级环境与构建环境设置成相同的。
升级过程中会尝试加载一些文件,另外还会评估一些值。如果你的项目中所使用的值不是在项目文件中自己定义的,例如在环境变量中定义的值,那就需要在升级之前事先设置好这些环境变量。如果这些环境变量设置不当,则可能会因为无法对值进行评估而出现警告或错误。
2) 在升级之前确保你已经安装了必要的平台。
在一台没有可用平台的机器上对项目进行转换,可能会导致转换错误。例如,如果你想在Visual Studio Professional SKU中对安腾平台的一个项目进行转换,由于它不支持安腾平台,你就会看到像下面这样的转换出错信息:
Failed to upgrade 'Debug|'. 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) 如果可能的话,使用本地的多定向支持来对Visual Studio 2008工具集进行构建。
在Visual Studio 2010中,我们新增了本地的多定向支持(Multi-Targeting),通过使用新的基于MSBuild的项目系统,你可以在Visual Studio 2010的IDE中为Visual Studio 2008工具集构建目标。关于这一特性,你可以看看这篇博客。我们建议用户,特别是拥有大型代码库的用户,在升级时先利用这一特性在Visual Studio 2010中构建Visual Studio 2008工具集的程序。这样,当你在升级过程中碰到问题,就可以把那些跟项目系统或构建系统相关的问题与工具的问题区别开来。这将会让你更加平滑地升级到Visual Studio 2010 工具集。
一旦升级完成,属性表文件(.Visual Studio props)就会被转换成新的格式(.props)。同样,项目文件(.vcproj)也会被转换为新的格式(.vcxproj)。值得注意的是,新的项目文件会与旧的项目文件同时生成。在转换过程中还产生了一种新的文件类型(.filter .vcxproj),该过滤器文件包含用来显示解决方案的资源管理器文件夹信息。该过滤器信息原本是项目文件的一部分,然而这种变化是必要的,因为只要项目文件发生变化,MSBuild就会请求重新构建。通过在一个单独的文件中保存过滤器信息,就可以在避免重新构建整个项目的情况下修改过滤器。
注意:升级过程不会转换.user文件。因此,你的调试和部署设置在转换后将不会被保留。
在Visual Studio 2010中,一个新的命令行升级工具 VCUpgrade.exe也被加入了进来。此命令行工具,适合在只有一个项目的情况下进行升级,因为它无法把解决方案文件作为输入,并将其解析成项目文件。VCUpgrade.exe位于 $(Visual Studio InstallDir)\ common7 \ Tools目录下,该工具也将附带在WinSDK的下一个版本中,这样用户就可以在没有Visual Studio IDE的情况下用命令行对WinSDK中的项目文件进行升级。