.NET 11 新功能與升級指南|和 .NET 8、9、10 有哪些差異?
Microsoft 在 2026 年 11 月 10 日正式發布 .NET 11。同一天,.NET 8 和 .NET 9 結束支援。還在用這兩版的團隊需要選擇遷移的目標版本。已使用 .NET 10 的團隊,可以根據新功能的需求和實際量測到的效能改善,決定何時升級。 Microsoft 發布公告 · .NET 支援政策
依 Microsoft 目前的政策,.NET 10 LTS 和 .NET 11 STS 都支援到 2028 年 11 月 14 日。.NET 10 在 2025 年推出,支援期約三年。.NET 11 晚一年推出,支援期約兩年。 .NET 支援政策
.NET 8、9、10、11 比較
| 版本 | 預設 C# | 正式發布 | 支援類型與截止日 | 對後端開發有代表性的變化 |
|---|---|---|---|---|
| .NET 8 | C# 12 | 2023-11-14 | LTS,已於 2026-11-10 結束 | C# 集合運算式,ASP.NET Core 開始支援以 Native AOT 發布部分 Minimal API 應用程式 |
| .NET 9 | C# 13 | 2024-11-12 | STS,已於 2026-11-10 結束 | C# 擴充 params 支援的集合型別,ASP.NET Core 內建 OpenAPI 文件產生 |
| .NET 10 | C# 14 | 2025-11-11 | LTS,2028-11-14 | C# 擴充成員,Minimal API 可啟用內建驗證,內建 OpenAPI 預設 3.1 |
| .NET 11 | C# 15 | 2026-11-10 | STS,2028-11-14 | C# 聯集型別與封閉階層,Minimal API 支援非同步驗證,內建 OpenAPI 預設 3.2 |
日期與狀態以 2026 年 11 月 14 日的官方資料為準。LTS 是長期支援,STS 是標準期限支援。Microsoft 在 2025 年把 STS 從 18 個月延長到 24 個月,.NET 9 也適用延長後的政策。 官方支援政策 · STS 政策調整 · C# 版本對照
從 ASP.NET Core 的變化來看,.NET 8 的 Native AOT 擴充了 Web API 的部署選項,應用程式可以預先編譯成原生程式。到了 .NET 9 和 10,框架開始接手更多 API 開發工作,包括產生文件和驗證輸入。從較舊版本升級時,可以繼續沿用原有做法,再評估要不要採用這些內建功能。 .NET 8 發布公告 · .NET 9 發布公告 · C# 13 新功能
C# 15 可以把「這個操作有哪些結果」寫進型別
以取消訂單為例,結果可能是成功、查無訂單,或訂單已出貨。以往可以用繼承或結果物件表達。C# 15 的聯集型別(union type)讓回傳值直接列出幾種結果,每種結果也能攜帶不同欄位。當呼叫端用 switch 處理結果時,編譯器可以檢查已宣告的情況有沒有漏掉。 C# 聯集型別文件
1 | CancelResult result = new AlreadyShipped("ORD-42"); |
如果日後把「退款處理中」加進 CancelResult,這個 switch 就會出現缺少分支的編譯警告(CS8509)。範例也處理了 null,因為這類聯集的預設值可能還沒有選定任何一個型別。若模型本來就用繼承組織,C# 15 的 closed 可把直接子型別限制在同一個組件,讓編譯器也能檢查封閉階層的分支。 C# 15 新功能 · C# 架構實作的訂單 API 範例
ASP.NET Core 11 會改到驗證和 OpenAPI 契約
.NET 10 的 Minimal API 已能用 AddValidation() 啟用請求驗證。.NET 11 把需要等待 I/O 的規則也納入流程,例如查詢資料庫後才能確認欄位值是否符合規則。新的 AsyncValidationAttribute 與 IAsyncValidatableObject 可以寫出可等待的驗證,Minimal API 和 Blazor 表單都能使用。 ASP.NET Core 10 更新 · ASP.NET Core 11 更新
如果專案用內建的 AddOpenApi() 且未指定版本,升級後產生的文件會從 OpenAPI 3.1 變成 3.2。新版可以描述伺服器推送事件(SSE)中每個事件的資料格式。已有前端 SDK 產生流程的專案,可以先確認產生器讀得懂 3.2,必要時用 OpenApiOptions.OpenApiVersion 維持 3.1。 OpenAPI 3.2 預設行為變更
SDK、執行階段與 EF Core 有哪些變化?
- SDK
dotnetCLI 預設啟用 Native AOT 啟動程式,像dotnet --version和部分工具呼叫可以減少啟動成本。MSBuild 伺服器也預設保持執行,有助於省下連續建置時重複啟動的開銷。 SDK 與工具更新 - 執行階段與標準函式庫 標準函式庫加入 Zstandard(zstd)壓縮支援,
System.Text.Json也能處理 C# 聯集型別。專案若想採用新的 Runtime Async 編譯方式,這項功能仍是預覽,需要另外啟用。 .NET 11 發布公告 · 標準函式庫更新 - EF Core 11 部分
GroupBy查詢能更完整地轉成 SQL。若使用 SQL Server,UseSqlServer的預設相容性層級已改為 160(對應 SQL Server 2022)。升級資料庫提供者套件前,先核對正式資料庫的相容性層級。 EF Core 11 新功能 · EF Core 11 不相容變更
如果你用 .NET MAUI 開發 App,Android、iOS 和 Mac Catalyst 的預設執行階段也從 Mono 換成 CoreCLR。升級後,可以用實機驗證啟動、記憶體用量,以及原本依賴原生程式庫的功能。 .NET MAUI 執行階段變更
.NET 11 比 .NET 10 快在哪裡?
.NET 11 的即時編譯器(JIT)在能確認索引一定有效時,可以省去更多陣列邊界檢查,也能避免某些短命物件的配置,例如走訪集合時建立的列舉器。如果服務的 CPU 時間大多花在迴圈或資料處理,值得用同一份程式碼和資料比較兩版的 CPU 用量。 Microsoft .NET 11 效能分析
EF Core 11 在部分分割查詢中,會省去讀取集合時多做的 JOIN。Microsoft 測了一個用 AsSplitQuery() 同時載入單筆關聯與集合的案例,查詢效能改善了 29%。如果專案也常用 Include 載入這類關聯,可以先比對升級前後產生的 SQL 和查詢耗時。 EF Core 11 查詢效能測試
現在要升 .NET 11 嗎?
- 還在 .NET 8 或 9 兩版已停止接收官方安全更新,優先遷移到 .NET 10 或 11。團隊若以 LTS 為標準,可先選 10;若已確認部署平台及套件支援 11,也需要 C# 15 或非同步驗證,可直接以 11 為目標。從 8 跨版時,依序核對途中各版的不相容變更。 Microsoft 停止支援公告 · .NET 相容性文件
- 已在 .NET 10 繼續安裝 10 的修補版本即可維持支援。評估 11 時,先確認 API 回應、查詢結果和從 OpenAPI 文件產生的客戶端都符合預期。接著用相同硬體、資料和流量,讓兩版各跑一支高流量 API 和一支資料庫查詢較重的 API,比較 p95 延遲(95% 的請求在這個時間內完成)、每次請求的 CPU 用量和 SQL 查詢耗時。若量測結果達到團隊設定的延遲或資源目標,就能把效能列為升級理由。 .NET 支援政策 · .NET 11 不相容變更
確定往 11 升級時,開發機與 CI 要有 .NET 11 SDK,專案的 TargetFramework 才能改為 net11.0。若有 global.json 固定 SDK 版本,要一併調整。用 Docker 部署時,也要檢查建置用的 sdk 映像和實際執行用的 aspnet 映像。如果同時升級 EF Core,確認資料庫提供者有對應的主要版本,再用測試資料庫驗證查詢與 migration。 .NET 11 下載頁 · SDK 與目標框架相容性 · EF Core 資料庫提供者
本文的 C# 範例使用 .NET SDK 11.0.100 編譯並執行。封面為 AI 生成的概念插畫。











