我正在了解C# 6.0引入的最新功能,并且刚刚按照自动属性初始化器的示例进行操作。
class NewSample
{
public Guid Id { get; } = Guid.NewGuid();
}
但是我的集成开发环境没有识别这个语法。
我想知道如何在Visual Studio 2013中启用C# 6.0。我正在使用的目标框架是4.5.1。
我正在了解C# 6.0引入的最新功能,并且刚刚按照自动属性初始化器的示例进行操作。
class NewSample
{
public Guid Id { get; } = Guid.NewGuid();
}
但是我的集成开发环境没有识别这个语法。
我想知道如何在Visual Studio 2013中启用C# 6.0。我正在使用的目标框架是4.5.1。
在VS2013中,您可以将新编译器安装为nuget package到项目中。这样您就不需要VS2015或更新的构建服务器。
https://www.nuget.org/packages/Microsoft.Net.Compilers/
Install-Package Microsoft.Net.Compilers
该软件包允许您使用/构建C# 6.0代码/语法。由于VS2013无法本地识别新的C# 6.0语法,因此尽管它可以正常构建,但它将在代码编辑器窗口中显示错误。Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
如果你想要完整的C# 6.0支持,你需要安装VS2015。
根据这篇文章,安装 Visual Studio 2013 中的 C# 6.0 编译器只需要安装一个扩展程序,然后更新 MSBuild 目标文件即可:
实际上,从此版本安装 C# 6.0 编译器只需要安装 Visual Studio 2013 扩展程序,该扩展程序会更新 MSBuild 的目标文件。
因此,只需从https://github.com/dotnet/roslyn获取文件,就可以开始使用了。
但您必须知道,那里实现的是过时的规范版本,因为他们不再更新 Visual Studio 2013 的包:
您也可以尝试四月份的终端用户预览版,它可以安装在 Visual Studio 2013 上。 (注意:这个 VS 2013 预览版已经非常过时,不再更新)
因此,如果您想使用最新版本,必须下载Visual Studio 2015。
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加载Microsoft.CodeAnalysis.BuildTasks.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应用程序而言,这非常令人恼火。
值得一提的是,在使用VS 2015之后,构建时间将会增加:
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。