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

Has*_*aan 198 c# visual-studio visual-studio-2013 c#-6.0

我正在阅读C#6.0中介绍的最新功能,并且只是按照自动属性初始化程序的示例,

class NewSample
{
    public Guid Id { get; } = Guid.NewGuid();
}
Run Code Online (Sandbox Code Playgroud)

但我的IDE无法识别语法.

我想知道如何在Visual Studio 2013中启用C#6.0.我使用的Target框架是4.5.1.

Dav*_*ere 177

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

https://www.nuget.org/packages/Microsoft.Net.Compilers/

Install-Package Microsoft.Net.Compilers
Run Code Online (Sandbox Code Playgroud)

该软件包允许您使用/构建C#6.0代码/语法.因为VS2013本身不能识别新的C#6.0语法,所以它会在代码编辑器窗口中显示错误,尽管它可以正常构建.

使用Resharper,您将在C#6功能上获得波浪线,但灯泡为您提供了"为此项目启用C#6.0支持"选项(设置保存为.DotSettings).

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

Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
Run Code Online (Sandbox Code Playgroud)

如果您需要完整的C#6.0支持,则需要安装VS2015.

  • 主要构造函数实际上已从最终版本中删除.这就是他们不工作的原因. (8认同)
  • 只想指出想要在MVC5项目中使用Razor中的C#6的人,看起来这是一个单独的NuGet包,即使你使用的是VS2015也需要.请参见http://stackoverflow.com/a/30832849/11398 (8认同)
  • 它可以工作(如你可以编译的那样),但VS2013仍然显示错误:http://stackoverflow.com/questions/35796001/c6-error-messages-on-vs2013-despite-using-microsoft-net-compilers-nuget-包 (2认同)
  • 他是他.这很酷.编译器预先显示错误,但在实际编译时成功编译.多么糟糕的周末早上开始! (2认同)

Pat*_*man 63

过时的预发布软件的信息:

根据这个,它只是一个安装并去Visual Studio 2013:

实际上,从此版本安装C#6.0编译器只需安装Visual Studio 2013扩展,而后者又会更新MSBuild目标文件.

所以只需从https://github.com/dotnet/roslyn获取文件即可开始使用.

您必须知道它是在那里实现的规范的过时版本,因为它们不再更新Visual Studio 2013的包:

您还可以尝试安装在Visual Studio 2013之上的April最终用户预览.(注意:此VS 2013预览已过时,不再更新)

因此,如果您确实要使用最新版本,则必须下载Visual Studio 2015.

  • 不幸的是,vs 2013的最终用户预览已经关闭:( (7认同)
  • 实际上,这是一种方式(参见我的回答).但它与最终发布之前几个月前的情况有所不同. (5认同)
  • 为了确保,使用VS 2013在C#6中没有受支持的方式?我必须使用VS 2015吗? (4认同)
  • 那是正确的.@vorou没有最新版本的VS 2013预览版. (2认同)

Ste*_*inq 5

这里的很多答案都是在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
Run Code Online (Sandbox Code Playgroud)

然后重新启动 Visual Studio。最初我遇到了一些问题;您需要将C# 版本设置回默认值(C#6.0 没有出现在版本列表中,但似乎已成为默认版本),然后清理、保存、重新启动VS 并重新编译。

有趣的是,由于代码中使用了 C#6.0 功能,我没有出现任何 IntelliSense 错误(这就是最初想要 C#6.0 的原因)。

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

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