我正在浏览C#6.0中引入的最新功能,并跟随了一个自动属性初始化程序的示例,
class NewSample
{
public Guid Id { get; } = Guid.NewGuid();
}
但是我的IDE无法识别语法。
我想知道如何在Visual Studio 2013中启用C#6.0。我使用的目标框架是4.5.1。
我正在浏览C#6.0中引入的最新功能,并跟随了一个自动属性初始化程序的示例,
class NewSample
{
public Guid Id { get; } = Guid.NewGuid();
}
但是我的IDE无法识别语法。
我想知道如何在Visual Studio 2013中启用C#6.0。我使用的目标框架是4.5.1。
Answers:
据此,这只是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。
在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支持”(设置保存为.DotSettings)的选项。
如@ stimpy77所述:要获得MVC Razor视图的支持,您将需要一个额外的程序包(对于那些不阅读注释的程序)
Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
如果要全面的C#6.0支持,则需要安装VS2015。
在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功能,所以我没有出现任何IntelliSense错误(这就是首先要使用C#6.0的原因)。
*版本2.0.1引发错误“无法从程序集Microsoft.Build.Tasks.CodeAnalysis.dll加载“ Microsoft.CodeAnalysis.BuildTasks.Csc任务。无法加载文件或程序集'Microsoft.Build.Utilities.Core,版本= 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
包之前按原样构建项目
如果您具有Resharper,则可以在Visual Studio 2013中使用完整的C#6.0功能。
您必须启用Resharper Build和voilá!在Resharper选项->构建中,启用Resharper构建,然后在“使用MSBuild.exe版本”中选择“最新安装”。
通过这种方式,Resharper将构建您的C#6.0项目,并且也不会在C#6.0代码中强调无效。
尽管我拥有Visual Studio 2015,但我也正在使用它,因为:
我将其放在这里,因为我一段时间以来一直在寻找解决此问题的方法,也许它将对其他人有所帮助。
似乎有些误会。因此,与其尝试打补丁VS2013,不如从微软那里得到答案:https ://social.msdn.microsoft.com/Forums/vstudio/en-US/49ba9a67-d26a-4b21-80ef-caeb081b878e/will-c- 截止到2013年有60位支持者?forum = roslyn
因此,请阅读并安装VS2015。