《Visual C++ 2012 开发权威指南》——1.4 Visual Studio 2012新特性

简介:

本节书摘来自异步社区出版社《Visual C++ 2012 开发权威指南》一书中的第1章,第1.4节,作者: 尹成 , 朱景尧 , 孙明龙 , 胡耀文,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.4 Visual Studio 2012新特性

1.4.1 Visual Studio 2012(VS2012)的六大技术特点

(1)VS2012和Visual Studio 2010(VS2010)相比,最大的新特性莫过于对Windows 8 Metro开发的支持。Metro天生为云端而生,简洁、数字化、内容优于形式、强调交互的设计已经成为未来的趋势。不过对于开发者而言,要想使用这项新功能,必须要安装Windows 8 RP版。该版本中包含了新的Metro应用程序模板,增加了JavaScript功能、一个新的动画库,并提升了使用XAML的Metro应用程序的性能。

(2)VS 2012 RC在界面上,比Beta版更容易使用,彩色的图标和按照开发、运行、调试等环境区分的颜色方案让人爱不释手。

(3)VS 2012集成了ASP.NET MVC 4,全面支持移动和HTML5,WF 4.5相比WF 4,更加成熟,期待已久的状态及工作流回来了,更棒的是,现在它的设计器已经支持C#表达式(之前只能用VB.NET)。

(4)VS 2012支持.NET 4.5,和.NET 4.0相比,.NET 4.5更多的是完善和改进,.NET 4.5也是Windows RT被提出来的首个框架库,.NET获得了和Windows API同等的待遇。

(5)VS 2012+TFS 2012实现了更好的生命周期管理,可以这么说,VS 2012不仅是开发工具,也是团队的管理信息系统。

(6)VS 2012对系统资源的消耗并不大,不过需要Windows 7、Windows 8的支持。

1.4.2 Visual Studio 2012九大新功能

项目兼容(Project Compatibility)
高效的IDE(IDE Productivity Improvements)
随处搜索(Search Everywhere)
工具栏升级(Toolbar Improvements)
附加工具(Additional Tooling)
多显示器支持(Multiple-Monitor Support)
性能提升(Performance Enhancements)
新的项目类型(New Project Types)
可扩展性(Extensibility)
1.项目兼容(Project Compatibility)
Visual Studio 2012的向下兼容性让不再犹豫升级的Visual Studio 2011。过去每次升级Visual Studio总会修改打开的项目文件,有时候甚至只是修改一下版本号,就让的项目不再被兼容,虽然在个人使用时并没有什么大问题,但在团队工作时却会造成大麻烦,只能让整个团队同时升级到相同版本。而现在,当把Visual Studio 2011 sp1升级到Visual Studio 2012时,不再会对团队造成影响,因为Visual Studio 2012使用的.NET4.5框架不会修改旧的项目文件。虽然仅仅支持Visual Studio 2011 sp1互通,却仍非常实用。

2.更高效的IDE(IDE Productivity Improvements)
不管是使用哪种编程语言编程,相信都会很快注意到这些高效的功能,也许会感到很熟悉,因为很多功能在集成了Productivity Power Tools扩展的Visual Studio 2012中已经看到。或者没有试过Power Tools,但是使用过Eclipse,相信对此也会非常熟悉。首先,解决方案管理器有了很大的修改,它不再只是文件的索引,它可以直接在解决方案管理器中查看对象的结构。例如,可以展开一个CS类来直接查看它的成员并且直接打开文件相应位置。在类成员上右键就会出来这个成员的call hierarchy菜单,一般来说,这个菜单会包括它的基类、衍生类以及在项目中被引用情况,通过单击菜单中不同的选项来查看或编辑文件相应的位置。正如所想的那样,双击要查看的结点就会打开结点所对应的文件位置。强大的新的解决方案管理器还提供了预览功能。单击解决方案管理器的结点就会打开一个文档的预览。这样,当只是想预览一些文件时就只会在一个公共Tab(标签页)中进行预览而不会打开过多的无用Tab。当然也可以单击预览Tab的Promote按钮或者对它进行手动编辑从而将它变成普通Tab,如图1-32所示。
image

图1-32 更有效的IDE

3.随处搜索(Search Everywhere)
在Visual Studio2011中虽然已经集成了简单的搜索功能,作为前三受欢迎的功能,在Visual Studio12中必然会着重优化。

目前已知提供搜索功能的部分有:解决方案管理器、扩展管理器、快速查找功能、新的测试管理器、错误列表、并行监控、工具箱、TFS(Team Foundation Server)团队项目、快速执行Visual Studio命令,如图1-33所示。

4.工具栏的改进(Toolbar Improvements)
最显眼的莫过于增加了快速启动搜索框,可以直接输入快速命令。只要键入关键字就会在下拉列表中提示可用命令。甚至可以在其中找到工具菜单,如图1-34所示。

image

图1-33 强大的搜索功能

image

图1-34 工具栏的改进

5.附加工具(Additional Tooling)
Visual Studio 2012新增了几项新工具都非常引人注目。Visual Studio 2012 IDE集成了Expression Blend,极大方便了XAML相关应用的开发。此外Visual Studio 2012提供了一个崭新的代码克隆分析工具,相信VSS的老用户会非常熟悉,但是这个新版本不仅集成在Visual Studio 2012中,而且功能相当完备,如图1-35所示。

6.多显示器支持(Multiple-Monitor Support)
Visual Studio 2011虽然已经开始支持显示器处理,但仍有不少问题。Visual Studio 2012提供了强有力的显示器支持。和新的IE一样,当把一个Tab拖到另一个显示器上时,它会自动创建一个IDE窗口。如果关闭再打开一个窗口,它还能很好地恢复原来的状态。

image

图1-35 附加工具

7.性能优化(Performance Enhancements)
Visual Studio 2011中有一个没怎么引起注意过的多项目并行Build功能,但只局限于C++,现在在Visual Studio 2012中,已经不用再受编程语言约束了,不论是用什么语言(Visual Studio 2012支持的)开发的,都可以畅快地体验并行Build的效率。从此可以在“最大并行数”中来管理最大并行项目数。Visual Studio 2012中msbuild.exe不复存在,而且由于Visual Studio 2012中Build过程也不再在Devenv.exe进程中进行,所以Visual Studio 2012编译时还将会获得更好的UI反应和更低的内存占用。Visual Studio 2012中,最大同时进行的Build数默认是等于CPU核心数的,不建议手动修改这个值,因为可能会造成不必要的矛盾的编译结果。

8.新的项目类型(New Project Types)
从专业的角度来看是否应该从一款Visual Studio转向另一版本的Visual Studio,很重要的一点就是比较项目类型。新的Metro风格的项目毫无疑问是Visual Studio 2012的主推功能。包括Application, Grid Application, Split Application, Class Library和Unit Test Library。另外一个Visual Studio 2012就是JavaScript,包括Blank Application, Fixed Layout Application, Grid Application, Navigation Application和Split Application。当然,这些新功能只能在Windows 8环境下使用。值得注意的是,这一版本还是支持窗口程序的,Silver Light也依然存在,仍然是Visual Studio所支持的平台之一。还应该注意到是,Visual Studio 2012甚至包含了便携库,这允许跨平台的Silver Light和标准.NET的跨平台开发。另一个很具代表性的特色就是,所以的新功能都支持C++开发,使用C++来开发Metro界面。但是,Visual Studio 2012将不再支持.NET2.0以下平台,较早的程序需要重新编译。其他具体的项目类型的支持差别请查看文章所附的大图。

9.可扩展性(Extensibility )
Visual Studio 2012提供了相当多的插件来帮助更简单地操作。

Visual Studio Package: 提供旧版本Visual Studio视图的插件

C#/Visual Basic Item and Project Templates: 定制的文档和项目模板

Editor Classifier: 自定义文本高亮支持

Editor Margin: 支持自定义编辑器"margins" UI

Editor Text Adornment: 支持编辑器自定义图片装饰

Editor Viewport Adornment: 支持画板的自定义图片美化

VSIX Project: Visual Studio 2012的可扩展性在Visual Studio Gallery中的体现

Windows Presentation Foundation/Windows Forms Toolbox Control: 客户端UI的 自定义控制

Visual Studio 2012还提供了新的API接口用来开发插件。和之前透露的一样,包括可以使用第三方单元测试工具(XUnit and NUnit)和定制的代码分析工具。这是微软开放IDE扩展的一个信号,特别是面向开源工具。

微软在做了众多改进后却删减了一个相当重要的特性—宏!根据微软的报告,因为只有很少的的用户使用过宏,所以Visual Studio 2012中并不会默认引入宏,但Visual Studio 2012将可以通过扩展包引入自定义功能。

从开发者的角度来看,我们希望Visual Studio能够很好地改善开发效率,在这方面,Visual Studio 2012并没有明显的改进。但在其他地方,Visual Studio 2012做了很多改进,例如:SearchEverywhere、真正的多核支持、先进的代码克隆分析工具,以及解决方案管理器。明确地把重构过的测试功能也集成了进来,并且把测试窗口全都统一到同一个单元测试资源管理器中。

相关文章
|
1月前
|
编译器 程序员 定位技术
C++ 20新特性之Concepts
在C++ 20之前,我们在编写泛型代码时,模板参数的约束往往通过复杂的SFINAE(Substitution Failure Is Not An Error)策略或繁琐的Traits类来实现。这不仅难以阅读,也非常容易出错,导致很多程序员在提及泛型编程时,总是心有余悸、脊背发凉。 在没有引入Concepts之前,我们只能依靠经验和技巧来解读编译器给出的错误信息,很容易陷入“类型迷路”。这就好比在没有GPS导航的年代,我们依靠复杂的地图和模糊的方向指示去一个陌生的地点,很容易迷路。而Concepts的引入,就像是给C++的模板系统安装了一个GPS导航仪
104 59
WK
|
17天前
|
机器学习/深度学习 人工智能 算法
那C++适合开发哪些项目
C++ 是一种功能强大、应用广泛的编程语言,适合开发多种类型的项目。它在游戏开发、操作系统、嵌入式系统、科学计算、金融、图形图像处理、数据库管理、网络通信、人工智能、虚拟现实、航空航天等领域都有广泛应用。C++ 以其高性能、内存管理和跨平台兼容性等优势,成为众多开发者的选择。
WK
38 1
|
1月前
|
Rust 资源调度 安全
为什么使用 Rust over C++ 进行 IoT 解决方案开发
为什么使用 Rust over C++ 进行 IoT 解决方案开发
68 7
WK
|
16天前
|
开发框架 移动开发 Java
C++和Java哪个更适合开发移动应用
本文对比了C++和Java在移动应用开发中的优劣,从市场需求、学习难度、开发效率、跨平台性和应用领域等方面进行了详细分析。Java在Android开发中占据优势,而C++则适合对性能要求较高的场景。选择应根据具体需求和个人偏好综合考虑。
WK
31 0
WK
|
17天前
|
安全 Java 编译器
C++和Java哪个更适合开发web网站
在Web开发领域,C++和Java各具优势。C++以其高性能、低级控制和跨平台性著称,适用于需要高吞吐量和低延迟的场景,如实时交易系统和在线游戏服务器。Java则凭借其跨平台性、丰富的生态系统和强大的安全性,广泛应用于企业级Web开发,如企业管理系统和电子商务平台。选择时需根据项目需求和技术储备综合考虑。
WK
23 0
|
1月前
|
存储 编译器 C++
【C++】面向对象编程的三大特性:深入解析多态机制(三)
【C++】面向对象编程的三大特性:深入解析多态机制
|
1月前
|
存储 编译器 C++
【C++】面向对象编程的三大特性:深入解析多态机制(二)
【C++】面向对象编程的三大特性:深入解析多态机制
|
1月前
|
编译器 C++
【C++】面向对象编程的三大特性:深入解析多态机制(一)
【C++】面向对象编程的三大特性:深入解析多态机制
|
1月前
|
存储 安全 编译器
【C++】C++特性揭秘:引用与内联函数 | auto关键字与for循环 | 指针空值(一)
【C++】C++特性揭秘:引用与内联函数 | auto关键字与for循环 | 指针空值
|
27天前
|
C++
C++ 20新特性之结构化绑定
在C++ 20出现之前,当我们需要访问一个结构体或类的多个成员时,通常使用.或->操作符。对于复杂的数据结构,这种访问方式往往会显得冗长,也难以理解。C++ 20中引入的结构化绑定允许我们直接从一个聚合类型(比如:tuple、struct、class等)中提取出多个成员,并为它们分别命名。这一特性大大简化了对复杂数据结构的访问方式,使代码更加清晰、易读。
32 0