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

Posted

技术标签:

【中文标题】如何在 Visual Studio 2013 中启用 C# 6.0 功能?【英文标题】:How to enable C# 6.0 feature in Visual Studio 2013? 【发布时间】:2015-01-21 12:28:59 【问题描述】:

我正在浏览 C# 6.0 中引入的最新功能,并且只是遵循了自动属性初始化器的示例,

class NewSample

    public Guid Id  get;  = Guid.NewGuid();

但我的 IDE 无法识别语法。

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

【问题讨论】:

我不相信这在 2013 年是可能的。请查看 VS 14 CTP 或 VS 2015 预览版。 嗯,你需要最新的编译器,它不是 VS 2013 的一部分,所以我认为这是不可能的。 好吧,我只是想看看ms是否发布了任何更新 @PauloMorgado 在“那个版本已经过时”中“那个”是什么意思? 4.5.1,VS2013,还是VS2014CTP? 你能否将这个问题的答案更新为@Deef 【参考方案1】:

在 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 视图,您需要一个额外的package(对于那些不阅读cmets 的人)

Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform

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

【讨论】:

主构造函数实际上已从最终版本中删除。这就是它们不起作用的原因。 只是想指出任何想要在 MVC5 项目中在 Razor 中使用 C#6 的人,看起来这是一个单独的 NuGet 包,即使您使用的是 VS2015 也是必需的。见***.com/a/30832849/11398 它可以工作(你可以编译),但是 VS2013 仍然显示错误:***.com/questions/35796001/… 嘿嘿嘿。这很酷。编译器提前显示错误,但实际编译时编译成功。周末早上的开始真是太棒了! 它会在代码编辑器窗口中显示错误,尽管它会构建得很好。 只是觉得有必要再次指出它。很好的答案!【参考方案2】:

过时的预发布软件信息:

根据this,这只是 Visual Studio 2013 的安装和使用:

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

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

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

您还可以尝试安装在 Visual Studio 2013 之上的 4 月的最终用户预览版。 (注意:这个 VS 2013 预览版已经过时了,不再更新)

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

【讨论】:

很遗憾,vs 2013 的最终用户预览版已经关闭:( 只是为了确保没有支持使用 VS 2013 在 C# 6 中编写的方法?我必须使用 VS 2015 吗? 没错。 @vorou 没有最新版本的 VS 2013 预览版。 其实这是一种方式(见我的回答)。但这与几个月前在最终版本发布之前所做的不同。 本主题或其他类似主题中的解决方案都没有帮助我。所以我猜唯一的解决方法是迁移到 VS 2015。【参考方案3】:

这里的很多答案都是在 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# 版本设置回 default(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 应用程序。

【讨论】:

@RichBianco 太好了 - 感谢您的反馈和投票。就个人而言,我不明白为什么 v2.0.1 不起作用。如果有人对此有任何线索 - 例如,摆脱我报告的错误 - 请发布您的修复。【参考方案4】:

值得一提的是,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 包之前的状态构建项目

【讨论】:

【参考方案5】:

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

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

虽然我有 Visual Studio 2015,但我也在使用它,因为:

    由于某种原因,Resharper 中的单元测试不适用于 Visual Studio 2015 VS 2015 使用比 VS 2013 更多的内存。

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

【讨论】:

【参考方案6】:

好像有什么误会。因此,与其尝试修补 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。

【讨论】:

即使在 ms 登录后,该链接也会给我​​“未授权”。当然,在某些设置下,安装 VS2015 或更高版本的费用是 XXX,000 英镑。

以上是关于如何在 Visual Studio 2013 中启用 C# 6.0 功能?的主要内容,如果未能解决你的问题,请参考以下文章

如何设置 TFS 2013 以使用 Visual Studio 2013 或 Visual Studio 2017 构建

visual studio 2013 wpf 添加窗口加载和关闭函数

如何在visual studio 2013中设置角度2?

如何在 Visual Studio 2013 中使用 NuGet 3.0?

如何在 Visual Studio 2013 中创建多项目模板?

如何使用 Visual Studio 2013 开发 Sharepoint Webpart