乐趣区

关于microsoft:官宣-NET-6-预览版-6

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

您能够下载实用于 Linux、macOS 和 Windows 的 .NET 6 预览版 6。

  • 安装程序和二进制文件
  • 容器镜像
  • Linux 软件包
  • 发行阐明
  • API 差别
  • 已知的问题
  • GitHub 问题跟踪器

请参阅 ASP.NET Core、EF 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/…

安装程序和二进制文件:

https://dotnet.microsoft.com/…

容器镜像:

https://hub.docker.com/_/micr…

Linux 软件包:

https://github.com/dotnet/cor…

发行阐明:

https://github.com/dotnet/cor…

API 差别:

https://github.com/dotnet/cor…

已知的问题:

https://github.com/dotnet/cor…

GitHub 问题跟踪器:

https://github.com/dotnet/cor…

ASP.NET Core:

https://devblogs.microsoft.co…

EF Core:

https://devblogs.microsoft.co…

.NET MAUI:

https://devblogs.microsoft.co…

Visual Studio 2022 预览版 2:

https://docs.microsoft.com/en…

Visual Studio 2022:

https://visualstudio.microsof…

Visual Studio for Mac 8.9:

https://visualstudio.microsof…

对话帖子:

https://devblogs.microsoft.co…

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/zh-…

Windows Arm64:

https://blogs.windows.com/win…

反对 x64 仿真:

https://github.com/dotnet/des…

并排安装程序:

https://github.com/dotnet/des…

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

https://github.com/dotnet/des…

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

咱们增加了三个新的工作负载命令,可实现更好的发现和治理。

  • dotnet workload search— 列出可装置的工作负载。
  • dotnet workload uninstall — 如果您不再须要某个工作负载,请删除指定的工作负载。也是节俭空间的好抉择。
  • dotnet workload repair — 重新安装您之前装置的所有工作负载。

    • 如果您的装置因互联网连贯断开而在两头失败,这将十分有用。
    • 可选工作负载由多个工作负载包组成,所以有时候你会发现,其中一些工作负载包装置胜利,而另一些则没有。

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

  • dotnet workload install — 装置工作负载。
  • dotnet workload list — 列出已装置的工作负载。
  • dotnet workload update — 更新已装置的工作负载。

工作负载:

https://github.com/dotnet/des…

库:对 System.DirectoryServices.Protocols 的 TLS 反对

已为 Linux 和 macOS 的 System.DirectoryServices.Protocols 启用 TLS 反对。之前它曾经为 Windows 启用。.NET 用户当初能够享受与 LDAP 服务器的平安通信。

归功于 @iinuwa。

System.DirectoryServices.Protocols:

https://docs.microsoft.com/zh…

启用 TLS 反对:

https://github.com/dotnet/run…

@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.co…

库:改良了异步同步性能

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

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

异步同步:

https://devblogs.microsoft.co…

更改:

https://github.com/dotnet/run…

新的 AppContext 配置值:

https://github.com/dotnet/run…

运行时: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/des…

启用反对:

https://github.com/dotnet/run…

JIT 与咱们采纳的 W^X 计划配合:

https://github.com/dotnet/run…

操作系统对此计划的反对:

https://developer.apple.com/d…

CodeGen 变更日志

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

动静 PGO:

  • 增加选项以随机抉择受爱护的 devirt 类 https://github.com/dotnet/run…
  • pgo/devirt 诊断改良 https://github.com/dotnet/run…

LSRA:

  • 重构 LSRA 启发式抉择 https://github.com/dotnet/run…

    • 当初,调试模式蕴含一个 COMPlus 变量,LsraOrdering 将让用户设置启发式排序。
    • 调整寄存器的启发式以抉择最佳的寄存器候选溢出。https://github.com/dotnet/run…

以下改良基于这些更改。

更多改良:

  • Windows x86
  • Windows x64
  • 更多信息

LSRA:

https://github.com/dotnet/run…

Windows x86:

https://github.com/DrewScoggi…

Windows x64:

https://github.com/DrewScoggi…

更多信息:

https://github.com/DrewScoggi…

代码品质

打消多余的“测试”指令 https://github.com/dotnet/run…

结束语

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

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

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

最初有任何的.NET 相干的开发问题,欢送到 Microsoft Q&A 论坛发问.

Microsoft Q&A 论坛:

https://docs.microsoft.com/en…

退出移动版