Visual Studio中C#和VB的新功能

[原文发表地址] What’s New for C# and VB in Visual Studio

[原文发表时间] April 2, 2016

 

在这周的Build 2016开发者大会里,我们发布了Visual Studio 2015 Update 2 以及Visual Studio “15” Preview。今天,你可以在发布的两个版本中体验很多新的语言功能。你可以在一台机器上安全的安装以上两个版本的Visual Studio。这样你就可以体验所有的新的功能。

 

Visual Studio 2015 Update 2 C# VB 的新功能

Visual Studio 2015 Update 2 中,对比以前你会注意到,我们已经增加了一些新增强的功能以及一些重构。团队把重点放在开发人员生产效率上,通过缩减时间、鼠标点击次数、以及按键次数来使你每天的工作更高效。

交互式改进(目前只针对于Update 2中的C#, 未来会对VB做改进)

Visual Studio Update 1中介绍了C#交互式窗口和命令行 REPL,csi。 在Update 2中,我们已经给编辑器配对了交互式体验:通过允许开发人员从编辑器中发送代码片段到交互式窗口中执行。我们同样也使得开发人员可以用一个项目的内容初始化交互式窗口。

进行以下操作来使用如上功能:

· 高亮显示编辑器中的代码片段,右键,并且选中**执行互动**(或者 Ctrl+E),如下图所示。

· 在解决方案管理器中右键一个工程,然后选中这个工程的**初始化交互**。

01

添加导入/ 使用命令的改进(C# 和VB都适用)

我们已经改进了添加导入/使用命令,使它支持拼写错误类型的”模糊“匹配,并且还支持在你整个方案和元数据中搜索正确的类型,而且如果有必要的话,一个导入/使用和任何工程/元数据的引用这两者都会添加。

你可以看一个关于这个功能的例子,“WebCleint“属于拼写错误的类型。这种类型的名字需要被修复(两个字母错位了),并且System.Net这个使用需要被添加上。

02

重构

我们所新增加的一组重构如下:

· 使方法同步(Update 2中支持VB和C#)

03

· 对委托调用使用空条件(Update 2中只支持C#,也有可能针对VB吗?阅读下文了解更多)

所以,此功能的杀手级应用场景是以一种线程安全的方式来触发事件。C#6之前正确的方式是这样做的:拷贝事件的备用字段到本地变量,检查该变量的空值并且调用委托中的if语句。否则,在线程A检查了变量为空导致它无意地抛出了空引用异常之后,线程B可以通过删除最后的处理程序对空设置委托。在C#中使用空条件是这种模式下的最短的形式。但是,在VB中的RaiseEvent语句中已经以null安全的形式来引发事件,使用相同的code-gen。所以这种重构的杀手级应用场景真的不存在,更糟糕的是,如果我们添加了重构,人们可能会被误导去修改他们的代码,使得代码变得更不习惯而且没有什么好处。一直以来我们都在检讨样品,不明这一点,而且明确执行空值检查,所以这看起来可能是对冗余行为的增强。在评论中告诉我们,如果你认为重构在触发事件之外仍然对你至关重要,我们会重新考虑!-ADG

04

Roslyn 功能(Update 2中支持c# 和VB

我们已经向Roslyn编译器中添加了两个新的编译器标记:

· Deterministic: 这个开关确保具有相同输入的build可以生成出具有相同输出的build ,对每个字节都是这样。在以前, PE 条目,比如说像MVID PDB ID 和时间戳,会根据每天的build改变,但是现在可以基于输出而进行确切地计算。

· 公有标志:支持一种新方法的签名,类似于延迟签名,除了他之外不需要给你的机器添加跳过验证条目。二进制文件只能用公钥被公有的签订,并且可以负载到开发与测试所必需的上下文中。这也被称为开放源码软件测试

 

先睹为快: Visual Studio “15” Preview 中有什么

这周我们发布了Visual Studio “15”与大家见了第一面。很及时地让大家看到了我们工作的重点所在。一些功能仍会改变,并且其他的也仍在到来。在下一次Visual Studio的发布之时,这是一个很好的提供反馈的机会。

玩转C# 7技术原型(VB15的技术原型在计划中)

C#7语言设计的指导主题是“处理数据”。虽然语言设计委员会仍正在决定C#7的最终功能,但你现在可以在Visual Studio “15” Preview 中体验我们一些语言功能原型。

进入语言技术原型,你需要在解决方案管理器中右键你的工程->属性->生成,然后在”条件编译符号”文本框中键入“__DEMO__”。这样会让你能预先体验本地方法,数字分隔符,二进制文字,参数返回值,以及模式匹配。

05

还有一个已知与参数返回值相关的错误,可以通过以下的方式解决:

· 右键解决方案管理器->卸载工程

· 卸载后右键工程->编辑类工程

· 在第一个属性组<AssemblyName>下添加<Features>refLocalsAndReturns</Features>

· 忽略任何你可能看到的XML结构警告

06

 

自定义代码风格实施(Visual Studio “ 15” Preview中支持VB和C#

你所要求的功能几乎都在这里!在Visual Studio 15 Preview中,你可以随意体验,并且对我们自定义代码风格实施的初始原型给出用户反馈。要看我们今天支持的样式选项,请转到工具->选项->C#/VB->代码样式。在一般选项中,你可以调整“this”/“Me”,预定义类型和“var”/类型推理首选项。今天,通过“var”首选项,你可以控制实施的严重性。例如:我可以设置喜欢的内置类型的显示类型“var”,任何违反此规则的操作都会在编辑器中被认为是错误。

你也可以添加命名规则,例如,要求方法为下划线方法。

07

 

08

 

请持续提供用户反馈

感谢去年我们收到的所有用户反馈。这对我在这里描述的这些功能以及我们正在着手实现的功能有着很重要的影响。请继续保持这样。开源项目Roslyn的语言反馈已经广泛开来。很高兴看到围绕在Github的Roslyn开源项目有更多的语言社区发展。

以下任一种地方都可以给我们用户反馈:

· Roslyn项目语言反馈

· Visual Studio: 发送反馈选项

· Visual Studio建议:用户之声

感谢使用本产品。我希望你很享受的用它来生成你下一个应用程序。