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

chr*_*igo 57 c# visual-studio c#-7.0 visual-studio-2017

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

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

但对于其他功能,我不知道我需要做什么.例如这个NuGet问题.

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

Sco*_*ain 35

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

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

这与使扩展方法在.NET 2.0项目中工作没有什么不同.您可以使用扩展方法,但需要使用NuGet包(或自己添加代码)以获取它所依赖的类型以添加​​到项目中.


1:所以4.7或5.0,无论他们决定调用它,如果有一个4.6.3它将不会在那个版本中,因为那不是一个小版本的版本凹凸,这是一个补丁版本凹凸而你无法制作修补程序版本中的API更改不会违反语义版本控制.

  • 只有元组而不是任务返回需要特殊类型.[如果您看到C#7的文档](https://docs.microsoft.com/en-us/dotnet/articles/csharp/csharp-7),您只能看到这两个功能表明它们依赖于NuGet包. (5认同)
  • 请参阅这些[评论](/sf/ask/2986048761/),对相同的事情进行相当动画的讨论. (3认同)
  • 嗨,@ScottChamberlain.那么,对于每个功能,我需要安装特定的NuGet包吗?C#7的所有新功能是否有这些软件包的任何列表?或者我需要手动检查每个功能并找到此包...或等待.net 4.6.3+ (2认同)
  • 此外,VS 2017发行说明链接到Github问题,但这些问题中的文档引用了尚未实现的功能,例如在模式匹配问题的情况下的记录类型.如果有MSDN文档页面和适当的示例,这将不是问题. (2认同)
  • @ScottChamberlain嗯,即使文档已经过时了.对于元组和任务,它说只有"Visual Studio 15 Preview 5及更早版本"才需要NuGet包.这意味着生产版本不需要它.这真的需要更新. (2认同)

Tao*_*Yue 21

任何针对.NET 4.7的项目都可以在不添加Nuget包的情况下使用C#7元组.你必须手动安装它:

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

它在Windows 10 Creator的更新中不起作用,因为Microsoft从".NET桌面环境"工作负载中省略了.NET 4.7组件.我提交了一个错误,但他们将其关闭为非错误: