.NET 9 的新功能
瞭解 .NET 9 中的新功能,並尋找進一步文件的連結。
.NET 9 是 .NET 8的繼任者,特別著重於雲端原生應用程式和效能。 標準期限支援 (STS) 版本, 支援 18 個月。 您可以在這裏 下載 .NET 9。
針對 .NET 9 的新功能,工程小組會在 GitHub 討論上張貼 .NET 9 預覽更新。 這是詢問問題並提供版本意見反應的絕佳位置。
.NET 運行時間
.NET 9 執行階段包含支援修剪功能開關的新屬性模型。 新的屬性使得可以定義 功能開關, 函式庫可以用來切換功能區域。
垃圾收集包含一個 用於根據應用程式大小動態調整的功能, 這項功能預設使用,替代伺服器 GC。
執行時期還包括多項效能改進,包括迴圈優化、內嵌以及 Arm64 的向量化和代碼生成。
如需詳細資訊,請參閱 .NET 9 執行平台的新增功能。
.NET 連結庫
System.Text.Json 新增對可為 Null 參考型別批注的支援,以及從類型匯出 JSON 架構。 它新增了新的選項,可讓您自定義寫入 JSON 的縮排,並從單一數據流讀取多個根層級 JSON 值。
在 LINQ 中,新的方法 CountBy 和 AggregateBy 可讓您依索引鍵匯總狀態,而不需要透過 GroupBy配置中繼群組。
對於集合類型,System.Collections.Generic.PriorityQueue<TElement,TPriority> 類型包含新的 Remove(TElement, TElement, TPriority, IEqualityComparer<TElement>) 方法,可用來 更新佇列中專案的優先順序。
針對密碼編譯,.NET 9 會在 CryptographicOperations 類型上新增一次性哈希方法。 它也會新增使用 KMAC 演算法的新類別。
針對反射,新的 PersistedAssemblyBuilder 類型可讓您 儲存 發出的組件。 這個新類別也包含 PDB 支援,這表示您可以發出符號資訊,並用它來偵錯產生的元件。
TimeSpan 類別包含新的 From*
方法,可讓您從 int
建立 TimeSpan
物件(而不是 double
)。 這些方法有助於避免浮點計算中固有的不完善所造成的錯誤。
如需詳細資訊,請參閱 .NET 9 連結庫中的新功能。
.NET SDK
.NET 9 SDK 引進了 工作負載集,其中所有工作負載都會保持在單一特定版本,直到明確更新為止。 針對工具,dotnet tool install
的新選項可讓使用者(而不是工具作者)決定是否允許工具在較新的 .NET 運行時間版本上執行,而不是工具目標版本。 另外:
- 單元測試有更好的 MSBuild 整合,可讓您平行執行測試。
- 根據預設,NuGet 安全性稽核會在直接和可轉移的套件參考上執行。
- 終端機記錄器預設會啟用,也已改善可用性。 例如,現在在建置結束時會概述失敗與警告的總數。
- 有新的 MSBuild 腳本分析器 (“組建檢查”) 可供使用。
- SDK 可以偵測並調整 .NET SDK 與 MSBuild 之間的版本不符。
-
dotnet workload history
命令會顯示目前 .NET SDK 安裝的工作負載安裝和修改歷程記錄。
如需詳細資訊,請參閱 SDK for .NET 9 的新功能。
AI 建置組塊
.NET 9 透過 Microsoft.Extensions.AI 和 Microsoft.Extensions.VectorData 套件引進了一個統一的 C# 抽象層。 這些抽象概念有助於與 AI 服務的互動,包括小型和大型語言模型(SLM 和 LLM)、內嵌、向量存放區和中間件。
.NET 9 也包含新的張量類型,可擴充 AI 功能。 TensorPrimitives 和新的 Tensor<T> 類型,藉由啟用高效編碼、操作和計算多維度數據,來擴充 AI 功能。 您可以在 System.Numerics.Tensors 套件的最新版本中找到這些類型,。
TensorPrimitives
- 擴充的方法範圍:從 40 個增加到近 200 個多載,現在包括類似
Math
、MathF
和INumber<T>
的數值運算,但用於數值範圍。 - 效能提升:許多操作現在已針對更佳的效能進行 SIMD 優化。
- 泛型重載:支持任何實作特定介面的類型
T
,擴展到不僅限於 .NET 中的浮點數範圍。
Tensor<T>
- 建置在
TensorPrimitives
之上,以有效率的數學運算。 - 盡可能使用零拷貝來提供有效率的與 AI 函式庫(ML.NET、TorchSharp、ONNX Runtime)的互操作性。
- 實現簡單且有效率的數據處理,透過索引編製和切割作業。
- 在 .NET 9 中,是實驗性的。
ML.NET
ML.NET 是開放原始碼的跨平台架構,可讓您將自定義機器學習模型整合到 .NET 應用程式中。
ML.NET 4.0 帶來下列改善:
- 以程式設計方式設定
MLContext
選項的新方式。 - 將 ONNX 模型以
Stream
格式載入。 - DataFrame 優化。
- Tokenizers 的新功能。
- (實驗性)Llama 和 Phi 系列車型的 TorchSharp 連接埠。
- (實驗性)因果LM管線 API。
如需詳細資訊,請參閱 ML.NET的新功能。
分詞器
Microsoft.ML.Tokenizers 函式庫為 .NET 開發人員提供文字標記的編碼和譯碼功能。 在 AI 情境中,使用本地模型時,管理上下文、計算成本以及預處理文本都非常重要。
最新版本引進了令牌化程式的重要新功能:
- GPT 的 Tiktoken(3、3.5、4、4o、o1)與 Llam3 模型
- Llama (以 SentencePiece 為基礎) 適用於 Llama 和 Mistral 模型
- CodeGen 用於程式代碼產生模型,例如 codegen-350M-mono
- Phi2 (根據 CodeGen) 適用於 Microsoft Phi2 模型
- WordPiece
- Bert(以 WordPiece 為基礎)適用於支援 Bert 的模型,例如 optimum--all-MiniLM-L6-v2
.NET Aspire
.NET Aspire 是一組功能強大的工具、範本和套件,可用來建置可觀察的生產就緒應用程式。.NET Aspire 的最新版本包含儀錶板和資源生命週期管理的改善。 它也會新增整合和 API,以在開發期間提供更多彈性。 .NET Aspire 9 可與 .NET 9 和 .NET 8 應用程式搭配使用。 如需詳細資訊,請參閱 .NET Aspire 9 的新功能。
ASP.NET Core
根據預設,ASP.NET 以 .NET 9 建置的核心應用程式是安全的、已擴充對預先編譯的支援,以及改善監視和追蹤。 透過效能改善,您會看到更高的輸送量、更快的啟動時間,且這一切都是以較低的記憶體使用量達成。 .NET 9 中的 ASP.NET Core 包括:
- 使用自動指紋版本設定,在建置和發佈時間優化靜態檔案的處理,例如 JavaScript 和 CSS。
- Blazor:新的混合式和 Web 應用程式範本、元件渲染模式的偵測、伺服器渲染的新重新連接體驗。
- API:內建支援使用
Microsoft.AspNetCore.OpenAPI
來產生 OpenAPI 檔,並增強原生 AOT 支援。 - 使用新的 API 來改善驗證和授權的安全性。
- 更輕鬆地在Linux上設定受信任的開發憑證,以在開發期間啟用 HTTPS。
這隻是 .NET 9 中的一些功能和增強功能。 如需詳細資訊,請參閱 ASP.NET Core 9.0 的新功能。
.NET MAUI
.NET 9 中的 .NET 多平臺應用程式 UI (.NET MAUI) 的重點在於增強效能和可靠性,以及桌面和行動應用程式的更深入整合。 .NET MAUI 包含適用於 iOS 和 Mac Catalyst 的 CollectionView 和 CarouselView 新效能實作,更新現有控件、新增應用程式週期事件,以及原生 AOT 和修剪功能增強,以減少應用程式大小並縮短啟動時間。 另外:
- Windows 有新的 TitleBar 桌面控制項可供使用。
- 新的 HybridWebView 控件可讓您更輕鬆地從 ReactJS、Vue.js和 Angular 等架構包含已啟用 JavaScript 的內容。
- Entry 現在支援其他鍵盤模式。
- 控件處理程式會盡可能自動中斷與其控件的連線。
- MainPage 已被棄用,建議透過覆寫 Application.CreateWindow(IActivationState) 類別來設定應用程式的主要頁面。
如需這些功能和更多功能的詳細資訊,請參閱 .NET MAUI for .NET 9 的新功能。
EF Core
Entity Framework Core 包含適用於 NoSQL 的 Azure Cosmos DB 資料庫提供者的重大更新。 它也包含 AOT 編譯和預先編譯查詢的一些步驟,以及其他改進。 如需詳細資訊,請參閱 EF Core 9 的新功能。
C# 13
C# 13 隨附於 .NET 9 SDK,並包含下列新功能:
-
params
集合 - 新的
lock
類型和語意 - 新的逸出序列 -
\e
- 方法群組的自然型態改進
- 物件初始化表達式中的隱含索引器存取
- 在迭代器和非同步方法中啟用
ref
局部變數和unsafe
上下文 - 啟用
ref struct
類型以實作介面 - 允許 ref 結構類型做為泛型中型別參數的自變數。
-
partial
類型現在允許部分屬性和索引器。 - 多載解析優先順序可讓函式庫作者將某個多載指定為優於其他多載的選擇。
此外,C# 13 新增了一項預覽功能:field
支援的屬性。
如需詳細資訊,請參閱 C# 13 的新功能。
F# 9
F# 9 隨附於 .NET 9 SDK,並包含下列新功能:
- 可為 Null 的參考類型
- 區分聯合 Is* 屬性
- 部分活動模式可以傳回 bool,而不是 unit 選擇。
- 當提供參數時,偏好使用擴充方法而非內建屬性
- 空白主體計算表達式
- 允許哈希指示詞接受非字串參數
- fsi 中擴充的 #help 指令,用於在 read-eval-print 迴圈(REPL)中顯示文件
- 允許 #nowarn 支援具有 FS 前置詞的錯誤碼以停用警告
- 關於在非遞歸函式或 let 綁定值上使用 TailCall 屬性的警告
- 強制執行屬性的目標對象
- 集合的隨機函式
- C# 集合表達式對 F# 清單和集合的支援
- 各種開發人員生產力、效能和工具改善
如需詳細資訊,請參閱 F# 9 的新功能。
Windows Presentation Foundation
.NET 9 中的 WPF 為建置新式應用程式提供增強的支援,其中包含數個主題增強功能等等:
- 支援 Windows Fluent 主題。
- 新增 Windows 淺色和深色模式的主題支援。
- 主題現在支援 Windows 強調色。
- 字體渲染已改進以支援連字形。
- 不再支援
BinaryFormatter
。
如需詳細資訊,請參閱 WPF for .NET 9 的新功能。
Windows Forms
.NET 9 中的 WinForms 支援新的主題、異步開發的增強功能等等:
-
Form
和TaskDialog
現在支援ShowDialogAsync
。 (實驗性特徵) - 不再支援
BinaryFormatter
。 - 支援應用程式以深色模式呈現的實驗性支援,這是 Windows 所支援的功能。
-
FolderBrowserDialog
和ToolStrip
有一些輕微的改進。 -
System.Drawing 程式庫有許多改善,包括包裝 GDI+ 效果、支援
ReadOnlySpan
,以及更好的 Interop 程式碼產生。
如需詳細資訊,請參閱 Windows Forms for .NET 9 的新功能。
另請參閱
- 我們對 .NET 9 部落格文章的願景
- ASP.NET Core 9.0 的新功能
- .NET MAUI 的更新內容
- EF Core 的新功能