文章构建C# 8.0声明
目前的计划是C# 8.0将与.NET Core3.0同时发布。但是,这些特性将随着我们正在进行的Visual 2019预览而变得活跃起来。
C# 8.0、NETCore3.0与Visual之间的关系是什么?
作为后续,我也对新语言版本在物理部署方面究竟是什么感到困惑。它是作为新的visual studio部署的一部分部署的新程序集,还是net安装的一部分?C# 8需要同时添加到完整框架和.NET核心中吗?
发布于 2019-03-01 21:29:51
内核3发布后的更新
在C# 8.0中添加的一些特性需要.NET Core3.0,因此它们之间的关系比以前的C#/.NET更加紧密。这对可以通过VS作为工作负载获得,但请记住,C# 8.0和.NET Core3.0不需要VS;您可以在其他IDE中使用它们。
C#语言版本化文档更详细地描述了语言/.NET关系。
关于一些实用的细节,您可以阅读如何中的目标C# 8.0。
旧答案
看看C#版本和C#工具的更新,它提供了一个很好的洞察力,因为它与Visual中的项目有关。
特别地,
在此场景中选择的默认语言版本是预览。您可以访问的C# 8.0特性完全基于您正在使用的编译器版本(因此也是.NET SDK)。当您使用未来预览时,您可能会获得更多(或稍作调整)功能。当您构建一个项目时,.NET SDK将发出警告,这一切仍然处于预览阶段。
回答
C# 8.0、NETCore3.0与Visual之间的关系是什么?
语言、SDK和Visual版本之间的关系比过去要松散得多。语言可以在它的任何化身中独立于.NET进化。但这并不意味着这一切都是真的。Visual也是独立于语言和框架的。如果您查看Visual安装程序,您将看到语言和.NET支持是可以安装的“工作负载”。SDK公开语言特性,VS提供工具。
如果您现在要使用VS 2017,请看一下
作为后续,我也对新语言版本在物理部署方面究竟是什么感到困惑
SDK包含可以从C# 8.0源代码创建程序集的编译器。
它是作为新的visual studio部署的一部分部署的新程序集,还是net安装的一部分?
SDK的一部分,见上面。这意味着除了您的代码之外,没有什么是“部署”的。您的代码,无论是哪个版本,都针对.NET的一个版本。也就是说,.NET的目标版本必须存在于机器或容器中。
C# 8需要同时添加到完整框架和.NET核心中吗?
它不需要“添加”。这个框架(4.8)和SDK (.NET Core3.0)的新版本提供了C# 8.0支持。
发布于 2019-02-25 20:21:08
C#语言包括一个规范以及名为Roslyn的引用编译器。
.Net版本(4.8或.net核心3)表示位于托管运行时( CLR)之上的框架(一组API),该框架执行编译后的程序(使用中间语言,一种汇编代码)。
虽然理想情况下,C#语言与平台无关,独立于框架和运行时,但在C#的历史上,设计了几个关键的语言特性,其中要么是当前版本的CLR不允许使用该特性,要么是基于更高级别的类型和框架添加(例如C# 5中的异步等待,以及在C# 7中在一定程度上对元组进行评估)。
使用C# 8时,异步流和范围等语言特性需要新的框架类型,这些新框架类型在当前/早期版本的框架中同样不存在。新的默认接口成员需要CLR更改。因此,这些语言特性(语法)不会针对以前的框架和CLR版本进行编译。
与以前的语言迭代不同,微软并没有在新的.Net框架4.8版本中发布这些需求。相反,他们正在推动.Net Core3.0作为参考平台,允许他们更快地进行迭代。
关于Visual,虽然您可以在C#的早期版本中用.Net 8编写代码,并根据.Net Core3.0运行时编译代码,但是您可能会损失大量的工具、简单性和开发人员经验。围绕语法突出显示、完成、代码修复等的工具依赖于Roslyn,它提供了丰富的代码分析API。
由于框架和语言部署不是完全同步的,所以使用Visual预览提供(大部分)兼容的框架和语言版本来测试这两者的新特性。
一个很好的参考是构建C# 8.0博客文章中的“平台依赖”一节。
编辑:
要回答评论问题“C# 8是如何安装的”:语言规范是作为编译器(Roslyn)实现和交付的。请参阅罗斯林GitHub存储库,它概述了编译器是如何生成、发布和安装的--不管是否安装了特定的Visual。
发布于 2019-02-27 16:56:55
有两种方法可以让C# 8.0编译:
现在构建.NET核心3.0.0需要安装相同的SDK。
构建.NET 4.8需要安装.NET完整的Framework4.8SDK。
这两个SDK可能都会随VisualStudio2019一起发布,或者您将不得不稍后安装它们,以便能够针对这些框架。
所以:- C# -> Roslyn编译器
小附录:考虑到对C#中新特性的支持,显然微软不会使.NET完全框架(4.8及更高版本) .NET标准2.1兼容。在未来,只有.NET核心将继续发展。
https://stackoverflow.com/questions/54767129
复制相似问题