[翻译] .NET 5.0 预览 6发布

原文:https://devblogs.microsoft.com/dotnet/announcing-net-5-0-preview-6
作者:Richard Lander .NET团队项目经理
时间:2020年6月25日

今天,我们将发布.NET 5.0 预览 6。它包含一小组新功能和性能改进。.NET 5.0 预览 4
文章发布了我们计划交付的.NET 5.0功能。 现在,大多数功能都已包含在产品中,但是某些功能尚未处于最终完成状态。 我们希望该版本在预览 8的发布能包含完整的功能。

你现在可以下载.NET 5.0 预览 6包括Windows版、macOS版和Linux版:

  • Windows和macOS安装包
  • 二进制文件
  • Docker镜像
  • Sanp安装包

ASP.NET Core和EF Core也在将于今天发布。注意:EF Core 5.0将不支持.NET Standard 2.0或.NET Framework。请阅读EF Core文章了解更多。
你需要使用Visual Studio 2019 16.7版本来使用.NET 5.0。.NET 5.0现在也被Mac版Visual Studio。或者在Visual Studio Code中安装C#扩展最新版本来使用.NET 5.0。

发布备注:

  • .NET 5.0 release notes
  • .NET 5.0 known issues
  • .NET 5.0 Runtime epics
  • GitHub release
  • GitHub tracking issue

Windows ARM64更新

我们在预览 4中宣布支持Windows ARM64。当时,我们仅在Windows ARM64上启用了控制台和ASP.NET Core应用程序。 预览 6 SDK现在包括了对Windows窗体的支持。 这意味着您可以像在x64上一样在Windows ARM64设备上构建和运行Windows Forms应用。我们仍在努力在Windows ARM64上添加对WPF的支持。

您可以看到一个在ARM64笔记本上运行的示例Windows Forms应用,如下所示。
0cdb1cba39b73a6b39a4dfa0e840bae9.png0cdb1cba39b73a6b39a4dfa0e840bae9.png

Visual Studio 16.7中提供了针对Windows ARM64的Visual Studio .NET远程调试器支持。 我们希望在此之后不久即可获得Visual Studio Code .NET远程调试器支持。为避免混淆,此支持是指在x64机器上运行Visual Studio或Visual Studio Code,通过远程附加到Windows ARM64机器上正在运行的.NET应用。 此外,Visual Studio Code还添加了对ARM64的支持。 我们将支持在Windows ARM64版本的Visual Studio Code中运行C#扩展和.NET调试器,但是,我还不知道具体的日期。

Windows Forms

Visual Basic用户习惯于强制其应用是单实例的(一次启动一个实例)。 现在可以通过WindowsFormsApplicationBase.IsSingleInstance实现。这是Scott Hanselman对这种行为的很好解释。用户:@paul1956

团队将添加ListViewGroup折叠支持。 此更改使管理具有多个ListViewGroups的表单变得更加容易。 致谢:@lonitra(.NET团队实习生)。

您可以看到如下所示的结果。
177bc9100570f41367271b7fca4589fa.png177bc9100570f41367271b7fca4589fa.png

RyuJIT代码质量提高

RyuJIT团队将通过连续的预览版本获得真正重要的改进,并对预览 6充满信心,让我们来看一下:

  • 通用提高
    • 结构处理方面的改进
    • 优化删除多余的零初始化
  • ARM64硬件内在函数的实现进度
    • 实现Duplicate和DuplicateSelectedScalar
    • ASIMD移位固有
    • 多项式乘长本征
    • 优化Vector64和Vector128.Create方法
    • 优化ToScalar()和GetElement()以使用arm64内部函数
    • 优化ToVector128,ToVector128Unsafe和Vector128.GetLower()
  • ARM64生成的代码改进:大大减少了ARM64代码的大小
    • 针对R2R,Arm和Arm64方案优化间接呼叫
    • 优化R2R和JIT的虚拟呼叫存根

单文件应用

我们一直在不断改进.NET 5中支持的单文件应用。 我们的目标是跨平台(Windows,macOS和Linux)的单文件应用(显然)。 我们已经接近目标。 当我们上次使用预览 4谈论单文件应用时,我提到Windows“单文件”应用需要一些额外的运行时文件。 我们添加了一个新选项,以在单个文件中包含本机二进制文件和任何其它内容(例如镜像)。 这些文件将在首次启动时提取。 面向Linux和macOS的应用无需将其用于本机的运行时二进制文件之中,除非它们希望将其用于媒体或其它内容。

当前限制:

  • 在Linux上,链接了运行时组件的singlefilehost仍将实现。 因此,运行时本机二进制文件将作为单独的文件发布(类似于Windows体验)。 #37119、#38304
  • 在Linux上,像IL程序集一样,装入包中嵌入的随时运行的程序集。 #38061

本机托管的应用程序

多年来,我们已经在本地应用中看到了多种.NET托管模型。 @rseanhall为此提出并实现了一个新颖的新模型,该模型利用了.NET应用托管层提供的所有内置应用程序功能(特别是加载依赖项),同时允许从本机代码调用自定义入口点。 对于许多情况而言,这是完美的选择,并且可以想象它在托管来自本机应用的.NET组件的开发人员中变得流行。 那是以前不存在的,感谢您的贡献@rseanhall。

两个主要PR:

  • 启用从应用上下文调用get_runtime_delegate
  • 实现hdt_get_function_pointer

[重大变化] 删除.NET 5.0中内置的WinRT支持

Windows运行时 (WinRT)是Windows中公开使用的新API的技术和ABI。您可以通过.NET代码调用这些API,就像使用C ++一样。.NET Core 3.0中添加了对WinRT互操作的支持,这是添加对Windows桌面客户端框架(Windows Forms和WPF)支持的一部分。

最近,我们一直与Windows团队紧密合作,以改进WinRT互操作与.NET的合作方式。我们已用Windows团队在.NET 5.0中提供的C#/WinRT工具链替换了内置的WinRT支持。WinRT互操作中的此更改是一项重大更改,使用WinRT的.NET Core 3.x应用将需要重新编译。我们将在即将到来的预览中提供有关此信息的更多信息。

在.NET 5中的支持WinRT API中明确指出了这些好处:

  • 可以与.NET运行时分开开发和改进WinRT互操作。
  • 使WinRT互操作与为其他操作系统(如iOS和Android)提供的互操作系统对称。
  • 可以利用许多其它.NET功能(AOT,C#功能,IL链接)。
  • 简化.NET运行时代码库(删除6万行代码)。

有关更多详细信息,请参见https://github.com/dotnet/docs/issues/18875上的官方文档。若要查看版本中所有重大更改(在dotnet /运行时中),请参考.NET 5.0重大修改。

平台支持

我们已经更新了.NET 5的操作系统支持版本页,以捕获我们针对.NET 5.0平台支持的最新计划。 请告诉我们您的意见。我们有没有遗漏了什么?

我们意识到该页面未列出我们提供的包裹管理器和容器支持。这部分内容是确定的。我们计划在发布.NET 5.0之前添加该信息。

最后

现在,我们已经过了发布周期的半程。 实际上,我们已经开始(用我们的话说)“关闭发布”。 如果您密切关注我们的代码库,您会发现我们开始更加仔细地管理问题里程碑。 现在已经工作在多个.NET版本之上,我可以告诉您,这是一个重要时刻。 此刻的胜利来自我们创建的一系列功能,并将它们完善到您满意的程度。 这就是我们现在在做的,而且是在家办公完成的。

你可能感兴趣的:([翻译] .NET 5.0 预览 6发布)