如何在 Visual Studio 2017 项目中启用 C# 7 的所有功能?

How can I enable all features of C# 7 in Visual Studio 2017 project?

在 Visual Studio 2017 发布后,我想尝试使用新的 C# 7 功能创建简单的控制台项目。我预计我只需下载新的 Visual Studio 2017,然后创建新的控制台项目并可以使用新的 C# 7 功能。但我不能。

如果我安装 NuGet package System.ValueTuple,我可以使用一些功能,例如元组。

但是对于其他功能,我不知道我需要做什么。例如 this NuGet issue

我现在需要做所有这些肮脏的安装吗?或者我可以以更简单的方式启用 c# 7 功能?

对于您在问题的第二部分链接到的任意类似任务的类型,您需要包含 System.Threading.Tasks.Extensions 包。

您需要这些 NuGet 包的原因是因为新的语言功能依赖于添加到 .NET 框架中的新类型。 C#语言特性所依赖的新类型不会"built in to the framework"直到4.6.2之后发布的下一个小版本不破坏SemVer1。因此,除非您使用下一版本的框架构建项目,否则您将需要使用 NuGet 包来使这些功能正常工作。

This is no different than getting extension methods to work in a .NET 2.0 project。您可以使用扩展方法,但您需要使用 NuGet 包(或自己添加代码)来获取它所依赖的类型以添加​​到您的项目中。


1:所以 4.7 或 5.0,无论他们决定如何称呼它,如果有 4.6.3,它就不会出现在那个版本中,因为那不是次要发行版本,也就是一个补丁版本 bump,你不能在不违反语义版本控制的情况下对补丁版本 bump 进行 API 更改。

任何以 .NET 4.7 为目标的项目都可以使用 C# 7 元组而无需添加 Nuget 包。您必须手动安装它:

  1. 升级至 Windows 10 Creator's Update (10.0.15063),或在其他版本的 Windows 上安装 .NET Framework 4.7:https://www.microsoft.com/en-us/download/details.aspx?id=55170
  2. 从“开始”菜单中,运行 Visual Studio Installer 并单击“修改”。转到 "Individual components" 并检查以下两个组件:
    • .NET Framework 4.7 SDK
    • .NET Framework 4.7 目标包

它不能在 Windows 10 Creator's Update 上开箱即用,因为 Microsoft 从“.NET 桌面环境”工作负载中省略了 .NET 4.7 组件。我提交了一个错误,但他们将其关闭为不是错误:

Vs2017 update 3可以支持c#7.1,但默认配置为支持c#7.0。

您可以修改项目的设置和select c# 7.1

了解更多详情how to configure vs2017.3 to support last version of c#7.1