官宣 .NET 6 預覽版 6

語言: CN / TW / HK

我們很高興宣佈.NET 6 預覽版6 問世啦。預覽版6是我們RC版發佈之前的倒數第二個預覽版。 我們將有兩個RC版。此版本本身相對較小,而預覽版7會更大。在那之後,我們將進行質量修復,直到11月的最終版本。我們期待一個很棒的新.NET版本。

您可以下載適用於Linux、macOS 和Windows 的.NET 6 預覽版 6

請參閲ASP.NET CoreEF Core.NET MAUI文章來了解更多關於Web、數據訪問和客户端方案的新功能。

從.NET 6 預覽版6 開始,我們已經測試並支持Visual Studio 2022 預覽版2Visual Studio 2022是您可以用來開發.NET 6的開發工具,例如 .NET MAUI 開發、C# 應用程序的熱重載、 用於WebForms 的新Web 實時預覽,以及IDE 體驗中的其他性能改進。.NET 6 也在Visual Studio for Mac 8.9進行了測試。

查看新的對話帖子,以深入瞭解工程師對最新.NET 功能的討論。

x64 仿真更新

我們已經完成了對macOS 的Apple Silicon 和Windows 的Arm64 的支持。 剩下的就是在macOS Apple SiliconWindows Arm64支持x64 仿真。 我們需要做兩件事來實現這一點。

在可以使用並排安裝程序之前(之後在.NET 6 中),您需要安裝所有x64 版本或者所有Arm64 版本。 如果要切換,需要卸載/刪除Arm64 機器上的所有.NET 版本。 很抱歉,目前在這個階段只能這樣實現。

工具:.NET SDK 可選工作負載改進

我們添加了三個新的工作負載命令,可實現更好的發現和管理。 - dotnet workload search— 列出可安裝的工作負載。 - dotnet workload uninstall — 如果您不再需要某個工作負載,請刪除指定的工作負載。 也是節省空間的好選擇。 - dotnet workload repair — 重新安裝您之前安裝的所有工作負載。 - 如果您的安裝因互聯網連接斷開而在中間失敗,這將非常有用。 - 可選工作負載由多個工作負載包組成,所以有時候你會發現,其中一些工作負載包安裝成功,而另一些則沒有。

在之前的預覽中,我們添加了以下命令: - dotnet workload install — 安裝工作負載。 - dotnet workload list — 列出已安裝的工作負載。 - dotnet workload update — 更新已安裝的工作負載。

庫:對System.DirectoryServices.Protocols 的TLS 支持

已為Linux 和macOS 的System.DirectoryServices.Protocols啟用TLS 支持。 之前它已經為Windows 啟用。.NET 用户現在可以享受與LDAP 服務器的安全通信。

歸功於@iinuwa

工具:Crossgen2 替換 crossgen

Crossgen2已為所有現有的crossgen 場景啟用。 有了這個里程碑,我們還從SDK 中刪除了(舊的)crossgen。 它不再可訪問且無法使用。

Crossgen(1 和2)支持將IL 預編譯為本機代碼。 預編譯主要有利於改善啟動。Crossgen2 是一個從頭開始的實現,已被證明是代碼生成創新的卓越平台。

以下MSBuild 屬性演示瞭如何使用crossgen2 啟用預編譯。

```

  <PublishReadyToRun>true</PublishReadyToRun> 
  <!-- Enable generating a composite R2R image -->

true ```

庫:改進了異步同步性能

異步同步是一種常見的阻塞工作類型。當它發生在線程池工作線程上時,它會導致飢餓。 緩慢的線程注入可能會延遲其他已經在隊列的線程的運行,並延遲解決飢餓問題的時間。

當是由於異步同步導致線程池工作線程上發生阻塞時,此更改默認提高了線程注入率。有一些新的 AppContext 配置值可用於配置響應異步同步的線程注入率。

運行時: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 實現沒有這種迴歸,是因為操作系統對此方案的支持

CodeGen 變更日誌

以下代碼生成更改包含在預覽版6 中。

動態PGO

LSRA

以下改進基於這些更改。

更多改進:

代碼質量

結束語

隨時每一個預覽版的發佈,很快我們將只處理最緊迫的一些的反饋,來為我們最終的版本提供最高的質量保證,如果您尚未嘗試.NET 6,請立即嘗試。 因為這將是你影響發佈的最後機會啦。

感謝所有讓.NET 6 成為更棒的版本做出貢獻的人。

感謝您成為.NET 開發人員。

最後有任何的.NET相關的開發問題,歡迎到Microsoft Q&A論壇提問。