原文: Introducing .NET 5html
今天,咱们宣布 .NET Core 3.0 以后的下一个版本将是 .NET 5 。这将是 .NET 系列的下一个重要版本。web
未来只会有一个 .NET ,您将可以使用它来开发 Windows,Linux,macOS,iOS,Android,tvOS,watchOS 和 WebAssembly 等等。docker
咱们将在 .NET 5 中引入新的 .NET API、运行时功能和语言功能。编程
从 .NET Core 项目开始,咱们已经向平台添加了大约五万个 .NET Framework API。 .NET Core 3.0 弥补了 .NET Framework 4.8 的大部分剩余功能差距,支持 Windows Forms,WPF 和Entity Framework 6。 .NET 5 构建于此工做之上,利用 .NET Core 和 Mono 的最佳功能建立一个平台,您能够用于全部现代 .NET 代码。安全
咱们打算在 2020 年 11 月发布 .NET 5,并在 2020 年上半年推出第一个预览版。将在 Visual Studio 201九、Visual Studio for Mac 和 Visual Studio Code 的将来更新中支持它。架构
NET 5 是 .NET Core 的下一步。该项目旨在经过如下几个关键方式改进 .NET:框架
这个新项目和方向是 .NET 的一个重要转折。使用 .NET 5,不管您正在构建哪一种类型的应用程序,您的代码和项目文件都将是相同的。每一个应用均可以访问相同的运行时、API 和语言功能。也包括几乎天天都在进行的 corefx 的性能改进。机器学习
您所喜欢 .NET Core 的全部内容将继续存在:工具
也有一些新的东西:性能
咱们将在今年 9 月发布 .NET Core 3.0,在 2020 年 11 月发布 .NET 5,而后咱们打算每一年 11 月发布一次主要版本的 .NET:
咱们跳过了版本 4,由于它会让熟悉 .NET Framework 的用户感到困惑,由于 .NET Framework 已经使用了很长时间的4.x系列。此外,咱们但愿清楚地传达 .NET 5 是 .NET 平台的将来。将其称为 .NET 5 使其成为咱们发布过的最高版本。
咱们也借此机会简化命名。咱们认为若是只有一个 .NET 是最好的了,咱们就不须要像 “Core” 这样的澄清术语。较短的名称是一种简化, 还传达了 .NET 5 具备统一的功能和行为的信息。固然若是您愿意也能够继续使用 “.NET Core” 这个名称。
Mono 是 .NET 的原始跨平台实现。它最初是做为 .NET Framework 的开源替代品,并随着 iPhone/iOS 和 Android设 备的普及而转变为针对移动设备。Mono 是用做 Xamarin 一部分的运行时。
CoreCLR 是用做 .NET Core 一部分的运行时。它主要用于支持云应用程序,包括 Microsoft 的最大服务,如今也用于 Windows 桌面,物联网和机器学习应用程序。
总而言之,.NET Core 和 Mono 运行时有许多类似之处(毕竟它们都是 .NE T运行时),但也有宝贵的独特功能。让选择所需的运行时体验成为多是很是有意义的。咱们正在使 CoreCLR 和 Mono 能够互相替换。咱们将使它像构建开关同样简单,以便在不一样的运行时选项之间进行选择。
如下部分描述了咱们计划用于 .NET 5 的主要重心。它们为咱们计划如何单独和共同发展这两个运行时提供了清晰的视角。
从一开始,.NET 就依赖于即时编译器(JIT)将中间语言(IL)代码转换为优化的机器代码。从那时起,咱们构建了业界领先的基于 JIT 的托管运行时,该运行时具备很是高的吞吐量,而且还提升了开发人员体验,使编程变得快速而简单。
JIT 很是适合长期运行的云和客户端方案。他们可以生成针对特定机器配置的代码,包括特定的 CPU 指令。JIT 还能够在运行时从新生成方法,这一共让 JIT 更快速的技术,同时仍可选择生成高度优化的代码版本 (若是这成为常用的方法)。
咱们努力使 ASP.NET Core 在 Techpower 基准测试上运行得更快, 这是 JIT 强大的力量和咱们在 CoreCLR 上的投资的一个很好的例子。咱们为容器强化 .NET Core的努力也证实了运行时动态适应受限环境的能力。
开发人员工具是 JIT 很是棒的另外一个好例子,例如 dotnet watch
工具或编辑并继续
。工具一般须要在单个进程中屡次编译和加载代码, 而无需从新启动, 而且须要很是快速地执行此操做。
使用 .NET Core 或 .NET Framework 的开发人员主要依赖于 JIT 。所以,这种体验应该是熟悉的。
大多数 .NET 5 工做场景的默认体验将使用基于 JIT 的 CoreCLR 运行时。两个值得注意的例外是 iOS 和客户端 Blazor(web assembly),由于它们都须要 ahead-of-time (AOT) 原生编译。
Mono 项目的大部分精力都集中在移动和游戏机上。该项目的一个关键功能和结果是基于业界领先的 LLVM 编译器项目的 .NET AOT 编译器。Mono AOT 编译器容许将 .NET 代码内置到一个能够在计算机上运行的原生代码可执行文件中, 就像 C++ 代码同样。AOT 编译的应用能够在较小的位置高效运行, 并在须要时交换吞吐量以进行启动。
Blavor 项目已经在使用 Mono AOT。这将是最先过渡到 .NET 5 的项目之一。咱们把它做为证实这个计划的方案之一。
有两种类型的 AOT 解决方案:
.NET Native 是咱们用于 Windows UWP 应用程序的 AOT 编译器, 也是上面列出的第一种 AOT 类型的示例。在这个特定实现里, 咱们限制了 .NET API 和您可使用的功能。咱们从这一经验中了解到, AOT 解决方案须要涵盖 .NET API 和模式的全部方面。
在 iOS、 web assembly 和一些游戏机里 AOT 编译仍须要。对于更须要快速启动或低占用空间的应用程序, 咱们将使 AOT 编译成为一个选项。
咱们于 2018 年 12 月在波士顿召开了一个技术团队,开始了这个项目。来自 .NET 团队(Mono/Xamarin和.NET Core)以及 Unity 的设计领导者介绍了各类技术能力和架构方向。
咱们如今正在将这个项目做为一个团队推动,并提供一套可交付成果。自 12 月以来,咱们在一些项目上取得了不少进展:
迁移到单个.NET实现会引起一些重要问题: 目标框架将是什么? NuGet包兼容性规则是否相同? .NET 5 SDK 应该支持哪些工做负载?如何为特定架构编写代码?咱们还须要 .NET Standard吗?
咱们如今正在解决这些问题,很快将分享设计文档供您阅读并提供反馈。
.NET 5 项目是 .NET 的重要且使人兴奋的新方向。您将看到 .NET 变得更简单,但也具备更普遍,更普遍的功能和实用性。全部新的开发和功能都将成为 .NET 5 的一部分,包括新的 C# 版本。
咱们看到了光明的将来,您可使用相同的 .NET API 和语言来面向各类应用程序类型、操做系统和芯片架构。在 Visual Studio ,Visual Studio for Mac,Visual Studio Code,Azure DevOps 或命令行中,能够轻松更改构建配置以构建不一样的应用程序。
转载原文地址:https://www.cnblogs.com/Rwing/p/introducing-net-5.html