.NET 11 有什麼新內容

本文介紹 .NET 11 的新功能。 上次更新是在候選版 1(RC 1)時。

.NET 11 目前正處於發行候選版本中。 預計於 2026 年 11 月全面上市。 你可以在這裡下載.NET 11。

.NET 執行時間

.NET 11 執行環境包括:

  • 更新了 x86/x64 與 Arm64 架構的最低硬體需求,要求使用更現代化的指令集以提升效能並降低維護複雜度。
  • 執行階段原生非同步(Runtime Async),能產生更簡潔的堆疊追蹤並降低開銷。 執行時非同步對於以 <EnablePreviewFeatures>true</EnablePreviewFeatures> 為目標的專案不再需要 net11.0。 執行階段程式庫本身是以 runtime-async=on 編譯而成。
  • 執行階段非同步效能改進,包括對傳回同步工作的方法 JIT 編譯專用的執行階段非同步版本、在未使用任何環境狀態時選擇不擷取 ExecutionContext 的非同步延續,以及可減少產生程式碼大小的尾部合併暫停點。
  • 執行階段非同步分層編譯、Task 和 ValueTask 工廠內建函式,以及隱含尾端呼叫的改進,可減少暖機期間的配置並加速常見的 await 路徑。
  • JIT 改進了界限檢查消除、冗餘檢查上下文移除、去虛擬化、切換式摺疊、常數摺疊 SequenceEqual及冗餘分支消除。 此外,還有新的 Arm SVE2 內建元件、改良的硬體內在成本建模,以及在 x64 上能發出單一Math.BigMul指令的加速MUL程式。
  • WebAssembly 上的 CoreCLR 現在能端到端執行函式庫的測試套件,執行時則新增 AVX-VNNI-512 硬體內在元件,用於向量乘法加法工作負載。
  • 程序中崩潰報告記錄,能在程序結束前捕捉管理的堆疊追蹤與執行狀態,該功能可在行動平台、Linux 和 macOS 上提供。
  • NativeAOT 透過共享派遣輔助工具加快介面調度,減少呼叫站點的二進位大小,並提升介面密集工作負載的吞吐量。
  • 涵蓋 CreateGeometricSequence、Zip、Unzip、Concat 及 Vector128<T> 的 SIMD 通道建構與組合 API(Vector256<T>、Vector512<T>、Vector64<T> 及 Vector<T> 系列)。
  • 用於 Half 算術運算與轉換的硬體 FP16 指令,適用於 x64 和 Arm64。

更多資訊請參見 .NET 11 執行環境的新功能。

.NET 函式庫

.NET 11 函式庫包含以下新 API:

  • Process 擴充內容包括執行並擷取輔助函式、發後不理的啟動方式、SafeProcessHandle 生命週期方法、更嚴格的控制代碼控管、用於暫停啟動的新 ProcessStartInfo.StartSuspended、用於安全查找程序的 Process.TryGetProcessById(Int32, Process),以及搭配 ProcessExitStatus 的 Process.Signal(PosixSignal),用於向程序傳送訊號並檢查其退出方式。
  • 壓縮,包括改良的 Base64 API、ZIP 封存項目的新方法、System.IO.Compression 中的 Zstandard 壓縮、讀取 ZIP 項目時的 CRC32 驗證,以及無資料流的 Deflate、ZLib 和 GZip 編碼器與解碼器上的 Reset() 方法。
  • 新增數值 API,包括 IEEE 754 十進位浮點型別(Decimal32、Decimal64 和 Decimal128)、用於分隔符號感知剖析的 INumberBase<TSelf>.TryParsePartial,以及泛型 Complex<T>。
  • System.Text.Json 改進,包括 C# 與 F# 聯集支援、JSON 行(JSONL)輸出、擴充多態性與原始碼產生、新增命名與忽略控制項,以及內建數值轉換器與集合合約。
  • 適用於 MemoryCache 的內建 OpenTelemetry 指標。
  • 差別工會支架(UnionAttribute 與 IUnion)在 System.Runtime.CompilerServices中。
  • Tar 壓縮檔格式選擇及 GNU 稀疏格式 1.0 支援。
  • Console 支援 FORCE_COLOR 環境變數。
  • TLS 握手強化、Linux 上的憑證驗證警示、Unix 上的通道綁定驗證,以及實驗性的呼叫者驅動 TLS 會話 API(TlsBufferSession 和 TlsSocketSession)。
  • 網路功能新增項目包括 HTTP 要求本文壓縮包裝函式、可設定的 HTTP 連線清除機制,以及可在 Windows、Linux 和 macOS 上透過 Dns 和新的 DnsResolver 類別使用的具型別 DNS 記錄解析 API。
  • HTTP/2 自動降級以支援 Windows 驗證。
  • LINQ 聯結功能的改進,包括 FullJoin,以及會傳回元組的 Join 和 GroupJoin 多載,涵蓋 Enumerable、Queryable 和 AsyncEnumerable。
  • 新增用於 X25519 金鑰交換的 X25519DiffieHellman 類別,以及在 DecryptKeyWrap 上支援無填充的 AES 金鑰包裝(AesEncryptKeyWrap/)。
  • 通用過載在 Random 和 NextInteger<T>NextBinaryFloat<T> 上,適用於任何數字通用類型。
  • EqualityComparer<T>.Create 工廠方法,從按鍵選擇器建立比較器。
  • QuicStream.Priority 用於 HTTP/3 串流優先排序。
  • MediaTypeNames.Video 中的影片 MIME 類型常數。
  • 有四種新Stream類型(, ReadOnlyMemoryStreamWritableMemoryStream, ReadOnlySequenceStream, StringStream),可在不複製的情況下封裝記憶體資料。
  • BitArray 接受 ReadOnlySpan<bool>、 ReadOnlySpan<byte>、 和 ReadOnlySpan<int>的構造器。
  • 在 System.ComponentModel.DataAnnotations 中透過 AsyncValidationAttribute、IAsyncValidatableObject 和新的 Validator.ValidateObjectAsync 方法進行非同步驗證,並透過 IAsyncStartupValidator 進行非同步 Microsoft.Extensions.Options 驗證。
  • 使用 Microsoft.Extensions.Diagnostics 中規則的活動追蹤組態,可對 Activity 追蹤進行宣告式控制,無須手動連接 ActivityListener 執行個體。
  • 跨車道向量運算包括 CreateGeometricSequence、Zip、Unzip,以及 Concat、Vector128<T>、Vector256<T>、Vector512<T> 和 Vector64<T> 上的 Vector<T> 系列。

欲了解更多資訊,請參閱.NET 11圖書館最新資訊。

.NET SDK

.NET 11 SDK 包含:

  • Linux 和 macOS 上較小的 SDK 安裝程式可透過組件去重複來實現,此外,對僅含 DotnetTools 的組件略過 crossgen 還能進一步節省空間。
  • 改良版 CA1873 程式碼分析器,降低雜訊並提供更清晰的診斷訊息。
  • 支援從 CLI .slnf 建立與編輯dotnet sln解決方案過濾器。
  • 支援檔案式應用程式,可透過 #:include 將應用程式拆分為多個檔案,並直接包含已編譯的 DLL 參考,以及重複使用 Native AOT 建置輸出,並提供對檔案式應用程式的 dotnet format 支援。
  • 新增了一個 dotnet run -e 從命令列傳遞環境變數的新選項。
  • dotnet watch 改進包括 Aspire 應用程式與主機整合、自動當機恢復,以及為 MAUI 和行動專案選擇裝置。
  • OpenTelemetry 取代了 CLI 遙測的 Application Insights。
  • 提供完整命令介面的 NativeAOT CLI 入口點,包含所有內建命令的 --help 以及工具/外部命令的啟動,會從 AOT 路徑以行程外方式執行,並略過受控 CLI 啟動程序。
  • NativeAOT CLI 和 MSBuild 伺服器現在預設已啟用。
  • dotnet test改進內容包括--no-dependencies環境DOTNET_TEST_RUNNER變數、--use-current-runtime--test-modules排除模式、各組件測試計數,以及飛行中測試的即時顯示。
  • dotnet test 支援 Android、iOS、macOS 及 Mac Catalyst 測試專案,並支援裝置選擇及新增 androidtest的 、 iostest、 macostest、 及 maccatalysttest 範本。
  • 額外的 dotnet test 執行層級選項,包括 --timeout、--maximum-failed-tests、--results-directory-layout per-module 以及實驗性的受影響測試工作流程,並支援遍歷專案、--list-tests 的 JSON 輸出,以及多模組執行的工件後處理。
  • 內建測試範本支援 xUnit v3(預設為 Microsoft。Testing.Platform)以及 NUnit,並附有選擇加入--test-runner的選項。
  • 多架構容器映像可透過 Podman 建置,使用 SDK 的容器發佈支援。
  • 容器發佈現在會先採用平台原生的本機執行階段(Windows 上的 wslc 和 macOS 上的 container),而非 Docker 和 Podman,並透過 SOURCE_DATE_EPOCH 產生可重現的映像摘要,且當目標資訊清單已存在時,會跳過重複的層上傳。
  • Razor 類函式庫的 TypeScript 編譯輸出現在能正確整合至 Static Web Assets 管線。
  • dotnet format 將 .editorconfig 在資料夾模式下的探索範圍限制為所含檔案的上層目錄。
  • 當 dotnet 未設定時,DOTNET_CLI_USE_MSBUILD_SERVER CLI 不再抑制 MSBuild 建置伺服器,而 OTLP 遙測匯出器則會在任何標準的 OTEL_EXPORTER_OTLP_* 環境變數上啟用。

欲了解更多資訊,請參閱 .NET 11 SDK 的新內容。

ASP.NET Core

關於 ASP.NET Core 的新功能,請參閱.NET 11 版 ASP.NET Core 的新功能。

C# 15

C# 15 是針對 .NET 11 專案的預設語言版本,包含以下功能:

關於 C# 新功能的資訊,請參見 C# 15 的新功能。

EF Core

請參考 EF Core .NET 11 的最新內容。

擴充函式庫

請參考 dotnet/extensions 的發布說明。

Windows Forms

請參考Windows Forms.NET 11的新消息。

WPF

請參考.NET 11 WPF最新消息。

另請參閱