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 中,当它处理项目的所有文件时,将显得非常缓慢。为了解决这个文件,我们往往不得不将一个项目拆分成多个项目,这样每个项目中的源文件就会少很多。#t#
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会受到冷遇了。