共用方式為


.NET 9 中的重大變更

若您要將應用程式移轉至 .NET 9 語言,則可能會受此處列出的重大變更影響。 變更會依技術領域分組,例如 ASP.NET Core 或 Windows Forms。

本文會將每個重大變更分類為「二進位不相容」或「來源不相容」,或分類為「行為變更」

  • 二進位不相容 - 針對新的執行階段或元件執行時,現有的二進位檔可能會發生重大行為變更,例如載入或執行失敗,如果發生此情況,則需要重新編譯。

  • 來源不相容 - 使用新的 SDK 或元件重新編譯,或以新的執行階段為目標時,現有的原始程式碼可能需要來源變更才能順利編譯。

  • 行為改變 ——現有程式碼與二進位檔在執行時可能有不同的行為。 如果不需要新的行為,則必須更新並重新編譯現有的程式碼。

ASP.NET Core

標題 變更類型
DefaultKeyResolution.ShouldGenerateNewKey 變更的意義 行為變更
開發者憑證導出不再建立資料夾 行為變更
轉送標頭 中間件忽略來自未知代理的 X-Forwarded-* 標頭 行為變更
HostBuilder 可在開發環境中啟用 ValidateOnBuild/ValidateScopes (英文) 行為變更
舊版Mono和 Emscripten API 未匯出至全域命名空間 來源不相容
具有多個建構函式的中間件類型 行為變更

容器

標題 變更類型 已推出的版本
容器映像不再安裝 zlib 行為變更 預覽 7
.NET 監視器映像簡化為僅含版本標籤 行為變更 預覽 5

Core .NET 程式庫

標題 變更類型 已推出的版本
使用 CompressionLevel 新增 ZipArchiveEntry 會設定 ZIP 中央目錄標頭一般用途位元旗標 行為變更 預覽 5
變更了非開放泛型的 UnsafeAccessor 支援 行為變更 預覽 6
使用自訂診斷識別碼的 API 廢止 來源不相容 (多個)
影響到 StringValues 隱式運算符的不明確多載解析 來源不相容 GA
BigInteger 最大長度 行為變更 預覽 6
BinaryReader.ReadString() 在錯誤的序列中回傳「\uFFFD」 行為變更 預覽 7
C# 多載解析時偏好 params Span 類型的多載 來源不相容
不允許建立類型為 System.Void 的陣列 行為變更 預覽 1
對於標示了 Equals() 的類型,GetHashCode()InlineArrayAttribute 執行預設拋出 行為變更 預覽 6
EnumConverter 會驗證已註冊的類型是否為列舉 行為變更 預覽 7
FromKeyedServicesAttribute 不再插入非索引鍵參數 行為變更 RC 1
IncrementingPollingCounter 初始回呼為非同步 行為變更 RC 1
強制執行內嵌陣列結構大小限制 行為變更 預覽 1
InMemoryDirectoryInfo 在檔案前面加上 rootDir 行為變更 預覽 1
採用整數的新 TimeSpan.From*() 重載版本 來源不相容 預覽 3
某些 OOB 套件的新版本 來源不相容 預覽 5
RuntimeHelpers.GetSubArray 傳回不同的類型 行為變更 預覽 1
String.Trim(params ReadOnlySpan<char>) 多載已移除 原始碼/二進位不相容 GA
支援空白的環境變數 行為變更 預覽 6
ZipArchiveEntry 名稱和註解遵循 UTF8 標誌 行為變更 RC 1

密碼編譯

標題 變更類型 已推出的版本
API 已從 System.Security.Cryptography.Pkcs netstandard2.0 中移除 來源不相容 GA
SafeEvpPKeyHandle.DuplicateHandle 向上參照控制代碼 (英文) 行為變更 預覽 7
部分 X509Certificate2 和 X509Certificate 建構函式已有所淘汰 來源不相容 預覽 7
Windows 私密金鑰存留期已簡化 行為變更 預覽 7

部署

標題 變更類型 已推出的版本
已被取代的桌面 Windows/macOS/Linux MonoVM 執行階段套件 來源不相容 預覽 7

Entity Framework Core

EF Core 9 中的重大變更

Interop

標題 變更類型 已推出的版本
默認支援 CET 二進制不相容 預覽 6

JIT 編譯器

標題 變更類型 已推出的版本
浮點數到整數的轉換是飽和的 行為變更 預覽 4
部分 SVE API 已移除 來源不相容 RC 2

網路

標題 變更類型 已推出的版本
API 已淘汰功能 來源不相容 預覽 6
HttpClient 無條件地報告度量指標 行為變更 預覽 7
HttpClientFactory 記錄會依預設隱藏標頭值 行為變更 RC 1
HttpClientFactory 使用 SocketsHttpHandler 作為主要處理程式 行為變更 預覽 6
HttpListenerRequest.UserAgent 可以為 null 來源不相容 預覽 1
HttpClient EventSource 事件中的 URI 查詢修訂 行為變更 預覽 7
IHttpClientFactory 記錄中的 URI 查詢修訂 行為變更 預覽 7

SDK 和 MSBuild

標題 變更類型 已推出的版本
dotnet sln add 不允許無效的檔名 行為變更 9.0.2xx
dotnet watch與舊架構不相容的 Hot Reload 行為變更 RC 1
dotnet workload 命令的輸出變更 行為變更 預覽 1
版本庫版本不再記錄installer 行為變更 預覽 5
MSBuild 自定義文化特性資源處理 行為變更 9.0.200/9.0.300
以 .NET Framework 為目標時使用的新預設 RID 來源不相容 GA
終端記錄器是預設的 行為變更 預覽 1
.NET 9 SDK 的版本需求 來源不相容 GA
針對 .NET Standard 1.x 目標發出的警告 來源不相容 預覽 6
針對 .NET 7 目標發出的警告 來源不相容 GA

序列化

標題 變更類型 已推出的版本
BinaryFormatter 一律會擲回 行為變更 預覽 6
可為空的 JsonDocument 屬性反序列化為 JsonValueKind.Null 行為變更 預覽 1
System.Text.Json 元數據讀取器現在會取消檢視元數據屬性名稱 行為變更 GA

Windows Forms

標題 變更類型 已推出的版本
BindingSource.SortDescriptions 不會傳回 null 行為變更 預覽 1
可空性註釋的變更 來源不相容 預覽 1
ComponentDesigner.Initialize 擲回 ArgumentNullException 行為變更 預覽 1
DataGridViewRowAccessibleObject.Name 起始資料列索引 行為變更 預覽 1
IMsoComponent 支援需自行選擇啟用 行為變更 預覽 2
新的安全性分析器 來源不相容 RC 1
如果 DataGridView 為 null,則沒有例外狀況 行為變更 預覽 1
PictureBox 引發 HttpClient 例外狀況 行為變更 預覽 6
StatusStrip 使用不同的預設渲染器 行為變更 GA

WPF

標題 變更類型 已推出的版本
GetXmlNamespaceMaps 類型變更 行為變更/來源不相容 預覽 3

另請參閱