Visual Studio 2010中的Visual C++增強主要包括以下幾個方面: 改進的項目系統支持、改進的Visual Studio用戶體驗、頭文件編輯、改變項目配置、配置項目的物理分布、更加聰明的IntelliSense等幾大共同特性。
特別是進入 Visual Studio 2000之後,Visual C++的IDE並沒有大的改變,但是效率卻越來越低下,使得程序員們不得不多吃“西紅柿”,補充點VC。
在本系列的開篇文章中我們就曾經介紹過。
微軟試圖將Visual Studio 2010打造成跟Visual Studio 6一樣的經典開發工具。所以,除了在語言層面開始支持最新的C++標准外,在IDE以及MFC庫等方面,微軟也下了很大的力氣。Visual C++不僅改善了IDE的效率,同時也引入了很多新的特性,期待這些IDE增強能夠切實的提高程序員們的開發效率。
改進的項目系統支持
在上一回我們提到過,在以往的Visual Studio版本中,MSBuild不能很好地支持Visual C++項目,微軟轉而提供了一個替代的專門解決辦法:VCBuild。在Visual Studio 2010中,微軟終於改進了這一點。
將VCBuild的眾多特有的功能集成到MSBuild中,並且使用MSBuild替代了VCBuild。雖然VCBuild有很多針對Visual C++項目的實用功能,但是,新的MSBuild不僅繼承了這些功能,還提供了更多的新特性,吸引用戶升級到這一新的構建平台上來:
診斷功能: MSBuild增強了它的診斷功能,以幫助用戶更加容易地發現和調試構建錯誤。例如,MSBuild可以幫助你決定如何以特定的順序編譯某些源文件,因為MSBuild可以檢測這些文件之間的依賴性。
可擴展性: 使用MSBuild,用戶可以為某些特定的平台構建不同的解決方案。另外,也可以在構建過程中,使用不同版本的編譯器。連接器等,使得我們的解決方案更具擴展性。
集成: 我們可以將我們的Visual C++項目添加到一個已經存在的MSBuild環境中。例如,我們可以將一個新的Visual C++項目集成到一個已經存在的MSBuild環境中,雖然這個MSBuild環境包含的是使用.NET Framework的Visual C#和Visual Basic項目。
Multi-Targeting曾經作為Visual Studio的一個重要特性,受到微軟的大力推廣。因為它使得“一次編碼,多個平台運行”成為可能。這一特性給程序員們帶來了極大的便利,再也不用為目標機器混亂的平台而頭疼。
但是在之前的Visual Studio中,Multi-Targeting特性只在托管語言中得到支持,可以針對不同的.NET Framework版本。現在在Visual Studio 2010中,隨著MSBuild的應用,本地代碼的Multi-Targeting也成為可能。
在Visual Studio 2010中,我們可以選擇使用Visual Studio 2010的工具集還是Visual Studio 2008的工具集。當我們因為一些兼容性或者是其他方面的原因不願過早地升級到Visual Studio 2010時,我們可以利於Multi-Targeting特性。
選擇使用Visual Studio 2008的Visual C++程序庫和編譯器,而同時使用Visual Studio 2010的IDE。這樣就實現了“魚與熊掌兼得”。當我們最終決定升級到Visual Studio 2010的程序庫和編譯器時,只需要在MSBuild或是項目屬性中做一個簡單的設置就可以了。圖2和圖3展示了不同工具集設置下項目的編譯記錄。
改進的Visual Studio用戶體驗
相信很多使用Visual Studio作為開發工具的Visual C++程序員都會懷戀使用Visual C++ 6.0的日子。Visual C++ 6.0配合著Visual Assist這個輔助工具,成為C++程序員們開發工具的不二之選。
隨著Visual Studio版本的升級,IDE引入了一些新的特性,但是卻使得整個IDE非常臃腫,效率低下。現在,Visual Studio 2010在IDE的效率方面做了很多工作,以提高我們的開發效率:
頭文件編輯
在以往的Visual Studio中,如果我們編輯一個被多處源文件引用的頭文件,Visual Studio將不得不打斷你的工作,因為它要很長的時間重新處理整個項目。現在,在新的Visual Studio 2010中,當我們編輯頭文件後,我們可以繼續工作,而Visual Studio會在後台進行新的頭文件的處理,同時IntelliSense也將很快更新,反應出我們對頭文件的修改。
改變項目配置
跟頭文件編輯相似,在以往的Visual Studio中,當我們改變了項目的配置後,Visual Studio會打斷我們的工作去處理項目配置的改變。例如,當我們將當前的項目配置從Debug切換到Release後,Visual Studio會花很長一段時間去處理項目配置的改變。
而在這段時間內,Visual Studio就像死掉一樣,我們什麼都不能做,只能傻等著。(我曾經無奈地把它當做Visual Studio的一個人性化設計,故意讓我們這些久坐的程序員在等待的時候起來走走,舒活一下筋骨。)在新的Visual C++中,修改項目配置後我們無需再等待就可以繼續工作。
配置項目的物理分布
你的項目是否非常龐大,包含很多源文件?如果是這樣的話,在以往的Visual Studio 中,當它處理項目的所有文件時,將顯得非常緩慢。為了解決這個文件,我們往往不得不將一個項目拆分成多個項目,這樣每個項目中的源文件就會少很多。
Visual Studio每次處理的文件數少一些,就會顯得快一點。在新的Visual Studio中,它提高了處理源文件的效率,即使你的項目有很多源文件,Visual Studio在處理這些文件的時候,仍然可以保持活動而不會出現“假死”的現象。這個特性可以使得我們將原來需要分布在多個項目中的源文件,根據需要重新配置,使得項目的物理分布更加合理。
更加聰明的IntelliSense
C++作為最復雜的編程語言,其IntelliSense一直是Visual Studio的一個難點。在以往的Visual Studio中,C++的IntelliSense是基於編譯器的,它可以理解復雜的C++代碼。但是,對於一些比較高級的C++代碼,特別是跟宏相關的一些內容。
IntelliSense就顯得無能為力了。在新的Visual Studio中,改進的IntelliSense顯得更加聰明,幾乎可以理解任何復雜形式的C++代碼。有了新的IntelliSense,估計很多程序員所鐘愛的Visual Assist會受到冷遇了。