官宣 .NET 6 預覽版 6

MicrosoftReactor發表於2021-08-21

我們很高興宣佈.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 啟用預編譯。

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

<PublishReadyToRunComposite>true</PublishReadyToRunComposite>

庫:改進了非同步同步效能

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

當是由於非同步同步導致執行緒池工作執行緒上發生阻塞時,此更改預設提高了執行緒注入率。有一些新的 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論壇提問。

相關文章