kim*_*gro 12 c# c#-8.0 .net-core-3.0
构建C#8.0的文章指出
目前的计划是C#8.0将与.NET Core 3.0同时发布.但是,随着我们正在开发的Visual Studio 2019的预览,这些功能将开始活跃起来.
C#8.0,.NET Core 3.0和Visual Studio之间有什么关系?
作为后续,我也很困惑在物理部署方面新的语言版本实际上是什么.它是作为新的Visual Studio部署的一部分部署的新程序集,还是部分网络核心sdk安装或其他部分?是否需要将C#8添加到完整框架和.NET Core?
C#语言包含一个规范以及名为Roslyn的参考编译器.
.Net版本(4.8或.net Core 3)表示框架(一组API),它位于执行编译程序的托管运行时(CLR)的顶部(使用中间语言,一种汇编代码).
理想情况下,C#语言与平台无关,并且独立于框架和运行时,在C#的历史中,设计了几个关键的语言功能,其中CLR的当前版本不允许该功能,或者该功能基于更高级别的类型和框架添加(例如,C#5中的Async-Await,以及C#7中的某种程度的值元组).
对于C#8,诸如Async流和范围之类的语言功能需要新的框架类型,这些类型在框架的当前/早期版本中同样不存在.新的默认接口成员需要CLR更改.因此,这些语言功能(语法)将无法针对早期的框架和CLR版本进行编译.
与以前的语言迭代不同,Microsoft不会在新的.Net Framework 4.8版中发布这些要求.相反,他们正在推动.Net Core 3.0作为参考平台,使他们能够更快地进行迭代.
关于Visual Studio,虽然您可以在早期版本的IDE中使用C#8编写代码并将其编译为.Net Core 3.0运行时,但您将失去大量的工具,简单性和开发人员体验.语法高亮,完成,代码修复等工具依赖于Roslyn,后者提供丰富的代码分析API.
由于框架和语言部署未完全同步,因此使用Visual Studio预览提供(大多数)兼容的框架和语言版本,以测试两者的新功能.
一个很好的参考是Building C#8.0博客文章中的"平台依赖性"部分.
编辑:
回答评论问题'如何安装C#8':语言规范是作为编译器(Roslyn)实现和交付的.请参阅Roslyn GitHub存储库,其中概述了如何构建,发布和安装编译器 - 无论是否安装特定的Visual Studio.
.NET Core 3发行后的更新
C#8.0中添加的某些功能需要.NET Core 3.0,因此它们之间的关系比C#/。NET以前更紧密。可以通过VS将这对作为工作负载获取,但是请记住,C#8.0和.NET Core 3.0不需要VS。您可以在其他IDE中使用它们。
在C#语言版本的文档详细描述了语言/ .NET关系。
有关一些实用的详细信息,您可以阅读如何在Visual Studio中定位C#8.0。
旧答案
看一下C#版本和C#工具的更新,它提供了与Visual Studio项目相关的语言的深入了解。
特别是,
在这种情况下选择的默认语言版本是Preview。您可以使用的C#8.0功能完全基于您使用的编译器版本(以及.NET SDK)。在使用将来的预览时,您可能会获得更多(或稍作调整)的功能。生成项目时,.NET SDK将发出警告,提示所有内容仍处于预览状态。
在回答
C#8.0,NET Core 3.0和Visual Studio之间是什么关系?
语言,SDK和Visual Studio版本之间的关系比以前松散得多。该语言可以以任何形式独立于.NET进行发展。这并不意味着那将永远是正确的。Visual Studio也独立于语言和框架。如果看一下Visual Studio Installer,您将看到语言和.NET支持是可以安装的“工作负载”。SDK公开了语言功能,而VS提供了工具。
如果您现在要使用VS 2017,请查看
作为后续,我也对物理部署方面的新语言版本实际上是什么感到困惑
它是包含可从C#8.0源创建程序集的编译器的SDK。
是将新的程序集部署为新的Visual Studio部署的一部分,还是网络核心SDK安装的一部分或其他?
SDK的一部分,请参见上文。这意味着除了您的代码外,没有“部署”任何东西。您的代码(无论哪个版本)都针对.NET版本。就是说,.NET的目标版本必须存在于计算机或容器上。
是否需要将C#8同时添加到完整框架和.NET Core中?
它不需要“添加”。此框架(4.8)和SDK(.NET Core 3.0)的较新版本附带C#8.0支持。