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

时间:2014-11-23 20:27:49

标签: c# visual-studio visual-studio-2013 c#-6.0

我正在阅读C#6.0中引入的最新功能,并且只是关注了自动属性初始化程序的一个示例,

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

但我的IDE无法识别语法。

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

6 个答案:

答案 0 :(得分:176)

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

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支持”#39; (设置保存为.DotSettings)。

正如@ stimpy77所述:对于 MVC Razor观点的支持,您需要额外package(对于那些不会阅读评论的人)

Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform

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

答案 1 :(得分:63)

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

根据this,它只是一个安装并适用于Visual Studio 2013:

  

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

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

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

  

您还可以尝试安装在Visual Studio 2013之上的April's End User Preview。   (注意:此VS 2013预览已过时,不再更新)

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

答案 2 :(得分:4)

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

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

之前构建项目

答案 3 :(得分:4)

这里的很多答案是在 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中的Package Manager控制台运行:

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

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

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

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

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

答案 4 :(得分:2)

如果您有Resharper,可以在Visual Studio 2013中使用完整的C#6.0功能 你必须启用Resharper Build和voilá! 在Resharper选项中 - &gt;构建 - 启用Resharper构建并在“使用MSBuild.exe版本”中选择“最新安装”

这样Resharper将构建您的C#6.0项目,并且也不会将C#6.0代码强加为无效。

我也使用这个,虽然我有Visual Studio 2015,因为:

  1. Resharper中的单元测试由于某种原因无法使用Visual Studio 2015
  2. VS 2015比VS 2013使用更多内存。
  3. 我把它放在这里,因为我现在正在寻找这个问题的解决方案已有一段时间了,也许它会帮助其他人。

答案 5 :(得分:-1)

似乎存在一些误解。所以,不要试图修补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。