解析Visual Studio 2015促进生产力的10个新功能
1 性能提示 Performance Tips
当我们想知道执行一段代码所耗费的时间时,需要借助于.NET 框架的Stopwatch类,像下面这样:
class Program{static void Main(){// Create new stopwatchStopwatch stopwatch = new Stopwatch();// Begin timingstopwatch.Start();// Do something 这里是需要测试的耗费时间的代码for (int i = 0; i < 1000; i++){Thread.Sleep(1);}// Stop timingstopwatch.Stop();// Write resultConsole.WriteLine("Time elapsed: {0}",stopwatch.Elapsed);}}我们需要手工的在需要测试执行时间的代码断开始和结束位置增加代码Stopwatch类,然后调试时查看代码的执行时间。
Visual Studio 2015引入新的性能提示功能,如下图所示,当调试一个段代码时,放置二个断点,当调试到第二个断点的地方时,Visual Studio会显示从上一个断点执行
到此执行断点时所耗费的时间:
执行一段代码调用,在代码调用的完成之后,也可以显示调用这段代码所耗费的处理器时间:
2 快速代码编写提示 Quick Action Light Bubble Icon
当Visual Studio的智能感知后台检测代码发现问题时,它会提示该代码有问题,并且提供解决此问题的建议方法。这个功能有点像是抄袭Resharper的,Resharper很早的版本就具备这样的功能。有两种气泡提示
语法错误修正

如上图所示,当前类型中没有定义activyName这个变量或是属性,所以Visual Studio对此语法错误产生三个提示:
A 在当前类型中增加变量定义
B 在当前类型中增加只读的变量定义
C 在当前类型中增加属性
代码重构建议
如下图所示的代码例子,第一的变量定义resultList可以忽略定义,在第二行代码中直接用tempResults.ToList() 来替代。
在我的开发环境中,安装Visual Studio之后必备的第三方插件是Resharper,这个功能在Resharper很早就出现了。
3 自定义窗体布局 Window Layout
Visual Studio有一套默认的布局方案,如果将布局调整多次后还想回到初始的界面布局,只能调用Window菜单下的Reset Window Layout恢复到安装后的状态。
布局通常是指解决方案浏览器的位置,宽度,输出窗口的位置和高度等信息,这此信息被Visual Studio保存着,只保留最新的一次布局。
Visual Studio 2015引入了布局保存方案,用户可以保存这些布局信息,以方便切换任务时调用不同的布局方案。

4 简化重命名 Simplified Rename
当需要重命名一个变量时,可以右键单击变量名称选择重命名或是按F2快捷键,Visual Studio 用绿色字高亮标识出当前文件中用到此变量的地方,同时在当前编辑器的右上角显示
引用到此变量的其它文件,可以预览重命名后的变化。

此功能可以看作是Visual Studio 重构中重命名变量功能的改善。Resharper的重命名功能比这个方便很多。
5 断点设定改善 break point improvement
Visual Studio 改善了基于条件表达式断点的条件设置界面,如下图所示,Visual Studio 2013中显示的自Visual Studio发布以来的经典的断点设置界面。

下图是Visual Studio 2015中的断点的条件表达式设置界面,当条件符合时,还可以增加方法,如下图中所示的将自定义消息输出到Output窗口。

关于Visual Studio的条件表达式,推荐一个非常不错的插件,OzCode,它以图形化的方式显示各种条件的表达式及其运算结果,极大的方便了程序调试。
Visual Studio 2015的断点还支持撤消功能,如果不小心删除一个断点,点撤消(Ctrl+Z)可恢复此断点。
6 错误输出改善 error list improvement
先看一下Visual Studio 2013中的错误输出窗体的界面:

再看Visual Studio 2015中的错误输出窗体:

Visual Studio 2015增加了编译器编译报错的错误代码,如上图中的CS0219,这样方便查阅MSDN相应的编译问题重现即可快速修复错误问题。
输出窗口的Code 列,CS开头的表示编译错误,CA开头的表示代码分析。
7 即时窗口中支持Lambda表达式和LINQ查询 Lambda expression and linq support in immediate window
在调试代码时,在即时窗口中直接输入一个表达式,Visual Studio会对此表达式求值并返回结果。Visual Studio 2015的即时窗口现在支持Lambda表达式和LINQ查询。

8 NuGet 包管理器改善 NuGet Package Manager improvement
Visual Studio 2015提供图形化的NuGet包操作工具,支持包搜索,选择项目需要引用的包是可以选择版本。

这个改善可以让NuGet生手摆脱对命令不熟悉的恐惧感。
9 静态引用 static using
Console类有一个WriteLine方法,现在可以直接在代码中调用WriteLine方法而不用加Console类型名称,如下图所示:

有点像C++语言的全局函数,如果WriteLine方法在多个类型中有定义,并且这几个类型都有加静态引用(statis using),编译时仍然会报错。
10 属性或方法可用Lambda表达式实现 Implement Methods and Properties with Lambda Expressions
方法体为Lambda表达式
public override string ToString () => string.Format("{0},{1}",x,y) ;
属性定义为Lambda表达式
public double Distance=> Math.Sqrt(X*X + Y *Y) ;
解析Visual Studio 2015促进生产力的10个新功能的更多相关文章
- Visual Studio 2015速递(3)——ASP.NET 新特性
系列文章 Visual Studio 2015速递(1)——C#6.0新特性怎么用 Visual Studio 2015速递(2)——提升效率和质量(VS2015核心竞争力) Visual Studi ...
- Visual Studio 2015 RC中的ASP.NET新特性和问题修正
(此文章同时发表在本人微信公众号"dotNET每日精华文章") 微软在Build大会上发布了Visual Studio 2015 RC,这也预示着Visual Studio 201 ...
- Visual Studio 2015 和 Apache Cordova 跨平台开发入门(一)
基于 Windows 10 的 Visual Studio 2015 跨平台的应用开发主要分为基于Visual Studio 安装 Xamarin 扩展的跨Android.iOS 和 Windows的 ...
- Visual Studio 2015速递(2)——提升效率和质量(VS2015核心竞争力)
系列文章 Visual Studio 2015速递(1)——C#6.0新特性怎么用 Visual Studio 2015速递(2)——提升效率和质量(VS2015核心竞争力) Visual Studi ...
- Visual Studio 2015 和 Apache Cordova 跨平台开发入门
原文:Visual Studio 2015 和 Apache Cordova 跨平台开发入门(一) 基于 Windows 10 的 Visual Studio 2015 跨平台的应用开发主要分为基于V ...
- Visual Studio 2015 速递(4)——高级特性之移动开发
系列文章 Visual Studio 2015速递(1)——C#6.0新特性怎么用 Visual Studio 2015速递(2)——提升效率和质量(VS2015核心竞争力) Visual Studi ...
- Visual Studio 2015速递(1)——C#6.0新特性怎么用
系列文章 Visual Studio 2015速递(1)——C#6.0新特性怎么用 Visual Studio 2015速递(2)——提升效率和质量(VS2015核心竞争力) Visual Studi ...
- Visual Studio 2015速递(4)——高级特性之移动开发
系列文章 Visual Studio 2015速递(1)——C#6.0新特性怎么用 Visual Studio 2015速递(2)——提升效率和质量(VS2015核心竞争力) Visual Studi ...
- Windows 10和Visual Studio 2015 能给.Net方向的开发从业者带来什么?
.Net 多年前我们选择了你,现在在当前的移动互联网热火朝天的时代,你能给我们什么样的惊喜?面对IOS和android的势头,windows的移动端能否实现三国鼎立? windows 10 号称统一各 ...
随机推荐
- JQuery FullCalendar(二)
前言:根据前文介绍,我们对JQuery FullCalendar如何从后台取数据有了初步了解,已经实现最基本的要求.下面介绍一下FullCalendar的事件 $('#calendar').fullC ...
- c++ STL中的vector与list为什么没有提供find操作?
map里有,set里也有,vector,list没有,太不公平了吧. 其实应该考虑为什么map,set里有find操作. include<algorithm>里有通用的find操作,通用的 ...
- WPF 自定义TextBox,可控制键盘输入内容
非原创,整理之前的代码的时候找出来的,可用,与大家分享一下! public class NumbericBoxWithZero : NumericBox { public NumbericBoxWit ...
- Android addHeaderView和setAdapter的调用顺序后报错
在4.4之前的系统,setAdapter后再设置addHeaderView会爆 ListView想要添加headerview的话,就要通过addHeaderView这个方法,然后想要为ListView ...
- redmine中创建项目与跟踪标签(原创)
今天来说下本公司所用到的项目管理工具redmine,总体来说还是比较好用的.redmine中可以记录项目的整个过程,可创建跟踪标签(里程碑.需求用例.功能.任务.缺陷)来进行对项目的管控.跟踪标签根据 ...
- 网页版视频网站可以用html5来实现吗?
当然可以用html5来实现视频网站,而且html5的诞生完全符合了百度优化,百度蜘蛛对这类的网站友好度非常高,会尽量会给高的权重,但是现在很多做 这类网站的开发还是比较习惯用websocket,这个东 ...
- iOS 项目改名~~~~~
今早出现一个改名的囧事...先记录下...在此之前感谢整理过这片文章的作者 --- GarveyCalvin ,插眼!以下是正文---- 前言:在iOS开发中,有时候想改一下项目的名字,都会遇到很多麻 ...
- JQuery图片轮播滚动效果(网页效果--每日一更)
今天,带来的是一个图片的轮播滚动效果! 先来看一下效果展示:亲,请点击这里 原理很简单,设置一个定时器,使图片列表在每隔一段时间后滚动一次.而循环效果,就是在每一滚动的时候,将第一张图片放到最后一张的 ...
- Unity3D热更新全书-下载 唯一的一篇
下载在这个时代实在是太平常了,每个人都深刻的理解着下载到底是什么. 这一篇文字只是把下载的代码分享并介绍,而已. 首先,下载系统担负着几个使命. 第一.是保持客户端版本库的最新. 第二.是下载要能够比 ...
- Java生成验证码原理(jsp)
验证码的作用: 验证码是Completely Automated Public Turing test to tell Computers and Humans Apart(全自动区分计算机和人类的 ...