如何在Visual Studio 2013中启用c# 6.0功能?

我浏览了c# 6.0中引入的最新特性,并遵循了一个自动属性初始化器的示例,

class NewSample
{
public Guid Id { get; } = Guid.NewGuid();
}

但我的IDE不识别语法。

我想知道如何在Visual Studio 2013中启用c# 6.0。我使用的目标框架是4.5.1。

125905 次浏览

过时的预发布软件信息:

根据,这只是Visual Studio 2013的安装和运行:

事实上,从这个版本安装c# 6.0编译器只需要安装一个Visual Studio 2013扩展,然后更新MSBuild目标文件。

所以只要从https://github.com/dotnet/roslyn中获取文件,你就可以开始了。

你必须知道这是一个过时的规范版本,因为他们不再更新Visual Studio 2013的包:

你也可以尝试四月份的最终用户预览,它安装在Visual Studio 2013的顶部。 (注意:VS 2013预览版已经相当过时,不再更新)

所以如果你想使用最新的版本,你必须下载Visual Studio 2015

在VS2013下,你可以将新的编译器作为nuget包安装到项目中。这样你就不需要VS2015或更新的构建服务器。

https://www.nuget.org/packages/Microsoft.Net.Compilers/ < a href = " https://www.nuget.org/packages/Microsoft.Net.Compilers/ " > < / >

Install-Package Microsoft.Net.Compilers

该包允许您使用/构建c# 6.0代码/语法。因为VS2013不能原生识别新的c# 6.0语法它将在代码编辑器窗口中显示错误,尽管它将构建良好

使用Resharper,你会得到c# 6特性上的弯曲线条,但是灯泡给了你一个选项“启用这个项目的c# 6.0支持”(设置保存到. dotsettings)。

正如@stimpy77所提到的:为了在MVC Razor视图中获得支持,你需要一个额外的(对于那些不阅读注释的人)

Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform

如果你想要完全支持c# 6.0,你需要安装VS2015。

值得一提的是,vs2015之后用户的构建时间将会增加:

Install-Package Microsoft.Net.Compilers

那些使用VS 2015并且必须在他们的项目中保留这个包的人可以修复增加的构建时间吗

编辑文件packages\Microsoft.Net.Compilers.1.2.2\build\Microsoft.Net.Compilers.props并清理它。该文件应该如下所示:

<Project DefaultTargets="Build"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
</Project>

这样做会强制按照添加Microsoft.Net.Compilers包之前的样子构建项目

好像有什么误会。所以,而不是试图修补VS2013这里和回答来自微软的家伙:https://social.msdn.microsoft.com/Forums/vstudio/en-US/49ba9a67-d26a-4b21-80ef-caeb081b878e/will-c-60-ever-be-supported-by-vs-2013?forum=roslyn

所以,请阅读并安装VS2015。

如果你有Resharper,就可以在Visual Studio 2013中使用完整的c# 6.0特性 你必须启用Resharper Build和voilá! 在Resharper Options -> Build -启用Resharper Build,并在“使用MSBuild.exe版本”中选择“最新安装”

这样Resharper将构建您的c# 6.0项目,也不会将c# 6.0代码下划线为无效。

我也在使用这个,尽管我有Visual Studio 2015,因为:

  1. 出于某种原因,Resharper中的单元测试在Visual Studio 2015中不适合我
  2. VS 2015比VS 2013使用更多的内存。

我把这个放在这里,因为我一直在寻找这个问题的解决方案,也许它会帮助其他人。

这里的许多答案都是在Roslyn(开源的。net c#和VB编译器)迁移到。net 4.6之前编写的。因此,如果您的项目目标是4.5.2(继承的,不能更改),那么它们就帮不了您了。

但是你可以从https://www.nuget.org/packages/Microsoft.Net.Compilers中获取以前版本的Roslyn并安装它,而不是安装最新版本。我使用1.3.2。(我尝试了2.0.1 -这似乎是在. net 4.5上运行的最后一个版本-但我无法让它编译*。)在VS 2013的包管理器控制台运行:

PM> Install-Package Microsoft.Net.Compilers -Version 1.3.2

然后重新启动Visual Studio。一开始我遇到了几个问题;你需要将c#版本设置回默认的 (c# 6.0没有出现在版本列表中,但似乎已被设置为默认),然后清理,保存,重新启动VS并重新编译。

有趣的是,由于代码中使用了c# 6.0的特性,我没有任何智能感知错误(这是首先使用c# 6.0的原因)。

*版本2.0.1抛出错误“Microsoft.CodeAnalysis.BuildTasks。无法从程序集Microsoft.Build.Tasks.CodeAnalysis.dll加载Csc任务。无法加载文件或程序集的Microsoft.Build.Utilities。Core, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'或其依赖项之一。系统无法找到指定的文件。确认声明是正确的,程序集及其所有依赖项都可用,并且任务包含实现Microsoft.Build.Framework.ITask的公共类。

更新自从发布这个答案以来,我注意到的一件事是,如果你在调试期间更改任何代码(“编辑并继续”),你会发现你的c# 6.0代码会突然显示为错误,似乎恢复到c# 6.0之前的环境。这需要重新启动调试会话。非常烦人,特别是对于web应用程序。