首页 文章详情

官宣 .NET 6 预览版 6

DotNet NB | 344 2021-08-25 14:30 0 0 0
UniSMS (合一短信)

点击蓝字

关注我们


我们很高兴宣布 .NET 6 预览版 6问世啦。预览版 6 是我们RC版发布之前的倒数第二个预览版。我们将有两个 RC版。此版本本身相对较小,而预览版7会更大。在那之后,我们将进行质量修复,直到 11 月的最终版本。我们期待一个很棒的新 .NET 版本。

您可以下载适用于 Linux、macOS 和 Windows 的 .NET 6 预览版 6

  • 安装程序和二进制文件

    https://dotnet.microsoft.com/download/dotnet/6.0

  • 容器镜像

    https://hub.docker.com/_/microsoft-dotnet

  • Linux 软件包

    https://github.com/dotnet/core/blob/main/release-notes/6.0/install-linux.md

  • 发行说明

    https://github.com/dotnet/core/blob/main/release-notes/6.0/README.md

  • API差异

    https://github.com/dotnet/core/tree/main/release-notes/6.0/preview/api-diff/preview6

  • 已知的问题

    https://github.com/dotnet/core/blob/main/release-notes/6.0/known-issues.md

  • GitHub 问题跟踪器

    https://github.com/dotnet/core/issues/6467

请参阅 ASP.NET CoreEF Core 和 .NET MAUI 文章来了解更多关于 Web、数据访问和客户端方案的新功能。


从 .NET 6 预览版6 开始,我们已经测试并支持 Visual Studio 2022 预览版2。Visual Studio 2022 是您可以用来开发.NET 6的开发工具,例如 .NET MAUI 开发、C# 应用程序的热重载、 用于 WebForms 的新 Web 实时预览,以及 IDE 体验中的其他性能改进。.NET 6 也在 Visual Studio for Mac 8.9 进行了测试。


查看新的对话帖子,以深入了解工程师对最新 .NET 功能的讨论。

下载适用于 Linux、macOS 和 Windows 的 .NET 6 预览版 6:

https://dotnet.microsoft.com/download/dotnet/6.0

ASP.NET Core:

https://devblogs.microsoft.com/aspnet/asp-net-core-updates-in-net-6-preview-6/

EF Core:

https://devblogs.microsoft.com/dotnet/announcing-entity-framework-core-6-0-preview-6-configure-conventions/

.NET MAUI:

https://devblogs.microsoft.com/dotnet/announcing-net-maui-preview-6/

Visual Studio 2022 预览版2:

https://docs.microsoft.com/en-us/visualstudio/releases/2022/release-notes-preview#17.0.0-pre.2.0

Visual Studio 2022:

https://visualstudio.microsoft.com/vs/preview/vs2022/

Visual Studio for Mac 8.9:

https://visualstudio.microsoft.com/vs/mac/

对话帖子:

https://devblogs.microsoft.com/dotnet/category/conversations/



x64 仿真更新

我们已经完成了对 macOS 的 Apple Silicon 和 Windows 的 Arm64 的支持。剩下的就是在 macOS Apple Silicon 和 Windows Arm64 上支持 x64 仿真。我们需要做两件事来实现这一点。

  • 并排安装程序

  • 以 .NET CLI 为目标的一流架构(主要)支持在各种场景中使用本机架构 SDK。

在可以使用并排安装程序之前(之后在 .NET 6 中),您需要安装所有 x64 版本或者所有 Arm64 版本。如果要切换,需要卸载/删除 Arm64 机器上的所有 .NET 版本。很抱歉,目前在这个阶段只能这样实现。

macOS Apple Silicon:

https://support.apple.com/HT211861

Windows Arm64:

https://blogs.windows.com/windows-insider/2020/12/10/introducing-x64-emulation-in-preview-for-windows-10-on-arm-pcs-to-the-windows-insider-program/

支持 x64 仿真:

https://github.com/dotnet/designs/pull/217

并排安装程序:

https://github.com/dotnet/designs/pull/217

以 .NET CLI 为目标的一流架构:

https://github.com/dotnet/designs/pull/233



工具:.NET SDK 可选工作负载改进

我们添加了三个新的工作负载命令,可实现更好的发现和管理。

  • dotnet workload search— 列出可安装的工作负载。

  • dotnet workload uninstall — 如果您不再需要某个工作负载,请删除指定的工作负载。也是节省空间的好选择。

  • dotnet workload repair — 重新安装您之前安装的所有工作负载。

  • 如果您的安装因互联网连接断开而在中间失败,这将非常有用。

  • 可选工作负载由多个工作负载包组成,所以有时候你会发现,其中一些工作负载包安装成功,而另一些则没有。


在之前的预览中,我们添加了以下命令:

  • dotnet workload install — 安装工作负载。

  • dotnet workload list — 列出已安装的工作负载。

  • dotnet workload update — 更新已安装的工作负载。

工作负载:

https://github.com/dotnet/designs/blob/main/accepted/2020/workloads/workloads.md



库:对 System.DirectoryServices.Protocols 的 TLS 支持

已为 Linux 和 macOS 的 System.DirectoryServices.Protocols 启用 TLS 支持。之前它已经为 Windows 启用。.NET 用户现在可以享受与 LDAP 服务器的安全通信。

 

归功于@iinuwa

System.DirectoryServices.Protocols:

https://docs.microsoft.com/dotnet/api/system.directoryservices.protocols

启用 TLS 支持:

https://github.com/dotnet/runtime/pull/52904

@iinuwa:

https://github.com/iinuwa



工具:Crossgen2 替换 crossgen

Crossgen2 已为所有现有的 crossgen 场景启用。有了这个里程碑,我们还从 SDK 中删除了(旧的)crossgen。它不再可访问且无法使用。


Crossgen(1 和 2)支持将 IL 预编译为本机代码。预编译主要有利于改善启动。Crossgen2 是一个从头开始的实现,已被证明是代码生成创新的卓越平台。 


以下 MSBuild 属性演示了如何使用 crossgen2 启用预编译。

   <!-- Enable pre-compiling native code (in ready-to-run format) with crossgen2 -->      <PublishReadyToRun>true</PublishReadyToRun>       <!-- Enable generating a composite R2R image --><PublishReadyToRunComposite>true</PublishReadyToRunComposite>

Crossgen2:

https://devblogs.microsoft.com/dotnet/conversation-about-crossgen2/



库:改进了异步同步性能

异步同步是一种常见的阻塞工作类型。当它发生在线程池工作线程上时,它会导致饥饿。缓慢的线程注入可能会延迟其他已经在队列的线程的运行,并延迟解决饥饿问题的时间。


当是由于异步同步导致线程池工作线程上发生阻塞时,此更改默认提高了线程注入率。有一些新的 AppContext 配置值可用于配置响应异步同步的线程注入率。

异步同步:

https://devblogs.microsoft.com/pfxteam/should-i-expose-synchronous-wrappers-for-asynchronous-methods/

更改:

https://github.com/dotnet/runtime/pull/53471

新的 AppContext 配置值:

https://github.com/dotnet/runtime/blob/a7a2fd6543ff71cecbbfe901b81ee27a6cf428c0/src/libraries/System.Private.CoreLib/src/System/Threading/PortableThreadPool.Blocking.cs#L271-L314



运行时:W^X 内存策略

我们正在为 W^X 内存保护启用支持。这是 Apple Silicon 机器的一项要求,也是其他操作系统上的一项有用的安全措施。


此功能有一个不太寻常的名字。它应该读作“write exclusive execute”。这意味着一个内存页可以被标记为读/写或读/执行,但不能包括写和执行的任何组合。例如,写入/执行页面容易被缓冲区溢出攻击所利用。


此功能需要在整个产品中进行更改,无论在哪里使用写入/执行页面。例如,预览版 6 包含一项更改,要求 JIT 与我们采用的 W^X 方案配合


W^X 是 Apple Silicon 机器上 macOS 的要求,在 .NET 6 的所有其他环境中是可选的,并且可能是 .NET 7 的所有环境中的默认模式。


注意:W^X 实现在 .NET 6 的所有环境中都有一个启动回归,但 Apple Silicon 除外。它将作为 .NET 7 的一部分得到解决。Apple Silicon 实现没有这种回归,是因为操作系统对此方案的支持

W^X 内存保护:

https://github.com/dotnet/designs/blob/main/accepted/2021/runtime-security-mitigations.md#wx

启用支持:

https://github.com/dotnet/runtime/issues/50391

JIT 与我们采用的 W^X 方案配合:

https://github.com/dotnet/runtime/pull/53173

操作系统对此方案的支持:

https://developer.apple.com/documentation/apple-silicon/porting-just-in-time-compilers-to-apple-silicon



CodeGen 变更日志

以下代码生成更改包含在预览版 6 中。


动态 PGO

  • 添加选项以随机选择受保护的 devirt 类

    https://github.com/dotnet/runtime/pull/53399

  • pgo/devirt 诊断改进

    https://github.com/dotnet/runtime/pull/53247


LSRA

重构 LSRA 启发式选择 https://github.com/dotnet/runtime/pull/52832

  • 现在,调试模式包含一个 COMPlus 变量,LsraOrdering 将让用户设置启发式排序。

  • 调整寄存器的启发式以选择最佳的寄存器候选溢出。

    https://github.com/dotnet/runtime/pull/53853

 以下改进基于这些更改。

更多改进:

  • Windows x86

    https://github.com/DrewScoggins/performance-2/issues/6612

  • Windows x64

    https://github.com/DrewScoggins/performance-2/issues/6592

  • 更多信息

    https://github.com/DrewScoggins/performance-2/issues/6593



代码质量

消除多余的“测试”指令

https://github.com/dotnet/runtime/pull/53214



结束语

随时每一个预览版的发布,很快我们将只处理最紧迫的一些的反馈,来为我们最终的版本提供最高的质量保证,如果您尚未尝试 .NET 6,请立即尝试。因为这将是你影响发布的最后机会啦。 


感谢所有让 .NET 6 成为更棒的版本做出贡献的人。

感谢您成为 .NET 开发人员。


最后有任何的.NET相关的开发问题,欢迎到 Microsoft Q&A 论坛提问。

Microsoft Q&A论坛:

https://docs.microsoft.com/en-us/answers/products/dotnet


推荐阅读:
Kubernetes全栈架构师(Kubeadm高可用安装k8s集群)--学习笔记
.NET 云原生架构师训练营(模块一 架构师与云原生)--学习笔记
.NET Core开发实战(第1课:课程介绍)--学习笔记

点击下方卡片关注DotNet NB

一起交流学习

▲ 点击上方卡片关注DotNet NB,一起交流学习

请在公众号后台


回复 【路线图】获取.NET 2021开发者路线图
回复 【原创内容】获取公众号原创内容
回复 【峰会视频】获取.NET Conf开发者大会视频
回复 【个人简介】获取作者个人简介
回复 【年终总结】获取作者年终总结
回复 加群加入DotNet NB 交流学习群

长按识别下方二维码,或点击阅读原文。和我一起,交流学习,分享心得。


good-icon 0
favorite-icon 0
收藏
回复数量: 0
    暂无评论~~
    Ctrl+Enter