Visual Studio 2010中C++項目升級指南

發表于:2010-03-26來源:作者:點擊數: 標簽:項目StudioVisualvisualstudio
Visual Studio 2010中C++項目升級指南 軟件測試 在本文將為大家介紹Visual Studio 2010中C++項目升級的有關問題,這篇文章的目的主要也是為了在你升級到VS2010的過程中,能給你一些指導,解釋一些問題。 【51CTO經典譯文】大家好,我叫李韶(音)。我是C++小組

  Visual Studio 2010中C++項目升級指南  軟件測試

  在本文將為大家介紹Visual Studio 2010中C++項目升級的有關問題,這篇文章的目的主要也是為了在你升級到VS2010的過程中,能給你一些指導,解釋一些問題。

  【51CTO經典譯文】大家好,我叫李韶(音)。我是C++小組的軟件開發測試工程師。正如許多博客文(例如,Felix Huang最近的這篇博客, Andreea Issac 的這篇博客,還有我之前的這篇博客)所介紹的那樣,這一個版本的主要升級之處就是C++ 構建系統(build system)從原先基于VCBuild的構建系統,遷移到基于MSBuild的構建系統,而C + +項目系統也是建立在MSBuild構建系統之上。由此也帶來了一系列的變化。我們的目標是讓用戶盡可能地平穩升級,在升級過程中,你仍可能會遇到一些限制、已知的問題或是在設計上的變化。這篇文章的目的主要也是為了在你升級到Visual Studio 2010的過程中,能給你一些指導,解釋一些問題。

  如何升級?

  Visual Studio 2010支持來自VC6、Visual Studio 2002、Visual Studio 2003、Visual Studio 2005和Visual Studio 2008的升級。同Visual Studio的早期版本一樣,你可以選擇通過IDE的轉換向導或者是命令行工具(Devenv/upgrade)來完成升級。

  以下是升級過程中的一些建議:

  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 oclearcase/" target="_blank" >ccurred 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中的項目文件進行升級。

  升級過程中的警告

  以下是轉換過程中,你可能會遇到的一些常見警告:

  1) 鏈接器輸出目錄

  在升級時你可能會看到的一個警告是MSB8012:$(TargetPath)和鏈接器的OutputFile屬性的值不匹配:

  - MSB8012: $(TargetExt) ('.dll') does not match the Linker's OutputFile property value 'C:\foo\Debug\MFCActiveX.ocx' ('.ocx') in project configuration 'Debug|Win32'. This may cause your project to build incorrectly. To correct this, please make sure that $(TargetExt) property value matches the value specified in %(Link.OutputFile). - MSB8012: $(TargetPath) ('C:\foo\Debug\MFCActiveX.dll') does not match the Linker's OutputFile property value 'C:\foo\Debug\MFCActiveX.ocx' ('C:\foo\Debug\MFCActiveX.ocx') in project configuration 'Debug|Win32'. This may cause your project to build incorrectly. To correct this, please make sure that $(TargetPath) property value matches the value specified in %(Link.OutputFile).

  Link.OutputFile是在屬性頁中Linker-> General -> Output File 這一項中定義的值。默認情況下,它的值是$(OutDir)$(TargetName)$(TargetExt),與$(TargetPath)相同。當我們把一個應用程序從之前的版本轉換過來時,并沒有辦法可以很好地解析出Link.OutputFile被$(TargetName)和$(TargetExt)的值,因為不同的用戶可能用不同的方法對其進行了賦值。為了解決這一點,我們決定在轉換過程中保留Linker.OutputFile中的值。在轉換之后,$(TargetName)將默認為$(ProjectName),$(TargetExt)將默認為該類應用程序的默認擴展名:動態庫文件為.dll,靜態庫為.lib,應用程序則為.exe,而Link.OutputFile值則將被保留。如果Link.OutputFile與$(TargetPath)不同,警告MSB8012會被記錄在轉換日志中。在構建應用程序時你也會看到同樣的警告。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97