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

Posted

技术标签:

【中文标题】如何在 Visual Studio 2017 项目中启用 C# 7 的所有功能?【英文标题】:How can I enable all features of C# 7 in Visual Studio 2017 project? 【发布时间】:2017-07-29 06:22:41 【问题描述】:

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

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

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

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

【问题讨论】:

Enabling c# 7 in a asp.net application的可能重复 【参考方案1】:

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

您需要这些 NuGet 包的原因是因为新语言功能依赖于添加到 .NET 框架的新类型。 C# 语言功能所依赖的新类型将不会“内置到框架中”,直到 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,它就不会出现在那个版本中,因为这不是次要版本版本的提升,而是补丁版本的提升并且你不能在不违反语义版本控制的情况下在补丁版本中进行 API 更改。

【讨论】:

查看这些comments 以获得对同一事物的相当生动的讨论。 嗨,@ScottChamberlain。那么,对于每个功能,我需要安装特定的 NuGet 包吗?对于 C# 7 的所有新功能,是否有这些包的列表?或者我需要手动检查每个功能并找到这个包...或等待.net 4.6.3+ 还有 VS 2017 发行说明链接到 Github 问题,但这些问题中的文档引用了尚未实现的功能,例如模式匹配问题的记录类型。如果有带有适当示例的 MSDN 文档页面,这将不是问题。 只有元组而不是任务返回需要特殊类型。 If you see the documentation for C# 7 你只能看到这两个功能说它们依赖于 NuGet 包。 @ScottChamberlain 嗯,即使那个文档已经过时了。对于元组和任务,它说只有“Visual Studio 15 Preview 5 及更早版本”才需要 NuGet 包。这意味着生产版本不需要它。这确实需要更新。【参考方案2】:

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

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

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

https://developercommunity.visualstudio.com/content/problem/41930/vs-2017-does-not-install-net-47-sdk-and-targeting.html

【讨论】:

【参考方案3】:

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

你可以修改你的项目的设置,选择c# 7.1

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

【讨论】:

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

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

如何在 Visual Studio 2017 项目中使用 modbus 库?

如何在 Visual Studio 2017 中将包添加到 python

如何手动将库添加到 Visual Studio 2017 项目?

如何在 Visual Studio 2017 中禁用 JavaScript 构建错误?

如何将 Visual Studio 2017 设置为旧项目的默认编辑器