外媒 Neowin 报道,微软在几个月前宣布了 .NET 5,作为通往 .NET 统一的第一步,其目标是拥有一套单一的 API、语言和工具,你可以在多个平台上利用。今天,微软公布了这一历程中的下一个台阶,即 .NET 6 预览版 1。其中包括一些新的改进。.NET 6 将是一个重要的版本,它对 .NET 的所有部分都有重大改进,包括对云、桌面和移动应用的改进。
.NET 6 的第一个预览版带来了大量的新特性和功能。首先是它开启了 .NET 的统一。根据这一计划,虽然你可以使用 .NET SDK 在 Visual Studio 和 Visual Studio Code 中构建移动应用程序,但由于移动工作负载是可选的,因此 SDK 的大小实际上会更小。这一功能将随着 .NET 6 的发布而逐步推出,并将在 .NET 7 中完成。
对于 .NET 6,微软也倾向于 “开放式规划”,所以大家都知道公司的发展方向。
此外,.NET 6 还附带了一个新的多平台 App UI,它建立在 Xamarin 之上。它是一个工具包,允许开发人员在不同平台上获得一致的应用视图,也允许他们共享代码。微软表示,.NET 6 版本期间的重点将是性能、控制主题和 “更快的开发者体验”。.NET 6 预览版 1 目前包括对 Android 和 iOS 的支持。Windows 和 macOS 将在未来的版本中得到支持。
.NET 6 还包括对开发 Blazor 桌面应用的支持。这一功能主要针对那些希望在离线桌面应用中提供功能丰富 UI 的 Web 开发人员。目前,Blazor 桌面是为 .NET 应用构建的,但微软表示,它也可以用来构建 Swift 等其他栈中的应用。可以确定的是,Blazor 是建立在多平台 App UI 之上的,重点是提供与其他桌面解决方案类似的性能。
.NET 正在进行的另一个项目名为 “fast inner loop”。该计划的目的是实现更快的构建时间,并开发出允许开发人员完全跳过重建,只需在实时进程中集成代码编辑的功能。
随着 .NET 6 的推出,微软也在 ARM64 支持上加大了投入。性能改进是预览版 1 中的一个重点领域,还有对 Windows Forms 和 Windows Presentation Framework(WPF)的支持。开发团队还计划在 .NET 6 中启用并测试后,在 .NET 5 中增加对 Windows 桌面应用功能的支持。关于 Mac,已经初步增加了对 Apple Silicon ARM64 芯片的支持。
微软还计划在 .NET 6 中改进容器。多种方式包括减少容器镜像大小,增强容器的可扩展性,增加对 Windows 进程隔离容器的支持,以及优化性能等。基于当前的 Linux 环境和发布策略,微软表示,.NET 6 的镜像将基于 Alpine 3.13、Debian 11 和 Ubuntu 20.04。一旦该公司开始发布新的 .NET 6 镜像,这个基础镜像版本将不会改变。在过去多个版本中被用作镜像的 Debian 10 将退役。
由于采用了 System.CommandLine 库,.NET 命令行界面(CLI)也有了一堆新的体验。这些包括响应文件和 Directives。此外,.NET 6 中也增加了数学 API 和库。它还包括对 Windows 访问控制列表(ACLs)的更好支持,并对各种相关方法(如 Semaphores 和 Mutex)进行了改进。
.NET 线程池经过重新设计,增强了可移植性。它将成为未来 .NET 版本的标准,并将允许应用程序访问共享线程池,无论其运行时如何。
.NET 6 预览版 1 的一个主要部分是对 Apple Silicon (M1 Mac)的支持。不过,微软强调,目前还处于 alpha 阶段。随着这个版本的发布,针对 macOS 的 ARM64 和 x64 构建版本都会被发布。根据微软的说法,这是一项重大的努力,因此,它不打算为早期版本的 .NET 发布 ARM64 版本。微软还感谢苹果在将 .NET 6 带到 Apple Silicon 的过程中给予的所有支持。
也就是说,目前在 Apple Silicon 上发布的版本仍然存在一些问题。调试原生 .NET 应用程序目前不能用于任何 Visual Studio 产品。微软计划在 Preview 3 中增加这方面的支持。其他已知的问题包括:
对于大堆栈分配,JIT可能无法生成堆栈清除代码,因为 Apple Silicon 的页面大小是 16K。
可靠性还没有达到与 x64 的同等水平。
少量测试未能通过 GC 压力测试。
少数测试表现出间歇性故障。
CI 测试没有启用(由于机器的可用性),所以测试覆盖率来自手动测试。
还没有设计出在 Apple Silicon 上同时使用仿真和原生 .NET 版本的体验。例如,如果你想在同一台机器上使用 .NET 6 和 .NET 5,你可能应该使用 . tar.gz. 发行版,而不是 . pkg,这样你就可以控制路径中的版本(如果有的话)。
.tar.gz. 包被报告为恶意软件。
.NET 还没有在 Rosetta 2 仿真上进行全面测试,但微软已经指出,无论如何,这都是连接到 ARM64 的临时桥梁,很可能不会被苹果永远支持。微软公司计划只要苹果支持,就会在这些老机器上支持 Mac 上的 .NET。
IT之家获悉,如前所述,这个版本的另一个重点也是性能提升。因此,.NET 6 Preview 1 带来了对单文件应用程序、macOS 上的单文件签名、硬件加速结构和动态 PGO 的增强。它还包含了 Crossgen2-- 初始 Crossgen 工具的新迭代 -- 它允许更容易地生成代码和跨代开发。目前,SDK 默认使用 Crossgen,但在未来的预览版中会转向 Crossgen2。
微软 .NET 6 将于 2021 年 11 月正式发布,类似于去年同一时间段发布 .NET 5.0 的方式。你可以前往这个专门的网页下载 .NET 6,并在这里的大量博客文章中了解更多关于它的细节。微软还表示,.NET 6 预览版 1 是在 Visual Studio 16.9 预览版 4 和 Visual Studio for Mac 8.9 上测试的,所以建议你使用这些配置来亲自测试。