共用方式為


.NET 9 中的中斷性變更

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

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

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

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

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

注意

本文為進行中的作業。 這不是 .NET 9 中斷性變更的完整清單。 若要查詢仍暫待發行的重大變更,請參閱 .NET 的問題

ASP.NET Core

標題 變更類型 引進的版本
DefaultKeyResolution.ShouldGenerateNewKey 已更改意義 行為變更 Preview 3
開發憑證導出不再建立資料夾 行為變更 RC 1
HostBuilder 可在開發環境中啟用 ValidateOnBuild/ValidateScopes (英文) 行為變更 Preview 7
舊版Mono和 Emscripten API 未匯出至全域命名空間 來源不相容 GA
具有多個建構函式的中間件類型 行為變更 RC 1

容器

標題 變更類型 引進的版本
容器映像不再安裝 zlib 行為變更 Preview 7
簡化為僅限版本標記的 .NET 監視器映射 行為變更 Preview 5

Core .NET 程式庫

標題 變更類型 引進的版本
使用 CompressionLevel 新增 ZipArchiveEntry 會設定 ZIP 中央目錄標頭一般用途位元旗標 行為變更 Preview 5
已改變非開放式泛型的 UnsafeAccessor 支援 行為變更 Preview 6
使用自訂診斷識別碼的 API 淘汰 來源不相容 (多個)
BigInteger 最大長度 行為變更 Preview 6
BinaryReader.GetString() 在格式不正確的序列上傳回 “\uFFFD” 行為變更 Preview 7
C# 多載解析偏好 params 跨類型多載 來源不相容
不允許建立 System.Void 陣列的類型 行為變更 Preview 1
標示 Equals() 的類型預設擲回 GetHashCode()InlineArrayAttribute 行為變更 Preview 6
EnumConverter 會驗證要列舉的已註冊類型 行為變更 Preview 7
FromKeyedServicesAttribute 不再插入非索引鍵參數 行為變更 RC 1
IncrementingPollingCounter 初始回呼為非同步 行為變更 RC 1
強制執行內嵌陣列結構大小限制 行為變更 Preview 1
InMemoryDirectoryInfo 在檔案前面加上 rootDir 行為變更 Preview 1
採用整數的新 TimeSpan.From*() 多載 來源不相容 Preview 3
某些 OOB 套件的新版本 來源不相容 Preview 5
RuntimeHelpers.GetSubArray 傳回不同的類型 行為變更 Preview 1
String.Trim(params ReadOnlySpan<char>) 多載已移除 來源/二進位不相容 GA
支援空白的環境變數 行為變更 Preview 6
ZipArchiveEntry 名稱和註解遵循 UTF8 旗標 行為變更 RC 1

密碼編譯

標題 變更類型 引進的版本
SafeEvpPKeyHandle.DuplicateHandle 向上參照控制代碼 (英文) 行為變更 Preview 7
部分 X509Certificate2 和 X509Certificate 建構函式已淘汰 (英文) 來源不相容 Preview 7
Windows 私密金鑰存留期已簡化 行為變更 Preview 7

部署

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

Interop

標題 變更類型 引進的版本
默認支援 CET 二進位不相容 Preview 6

JIT 編譯器

標題 變更類型 引進的版本
飽和的浮點數至整數轉換 行為變更 Preview 4
部分 SVE API 已移除 來源不相容 RC 2

網路

標題 變更類型 引進的版本
API obsoletions 來源不相容 Preview 6
HttpClient 計量無條件報告server.port 行為變更 Preview 7
依預設,HttpClientFactory 記錄會修訂標頭值 行為變更 RC 1
HttpClientFactory 使用 SocketsHttpHandler 作為主要處理程式 行為變更 Preview 6
HttpListenerRequest.UserAgent 可為 Null 來源不相容 Preview 1
HttpClient EventSource 事件中的 URI 查詢修訂 行為變更 Preview 7
IHttpClientFactory 記錄中的 URI 查詢修訂 行為變更 Preview 7

SDK 和 MSBuild

標題 變更類型 引進的版本
dotnet restore 稽核可轉移套件 行為變更 Preview 6
dotnet sln add 不允許無效的檔名 行為變更 9.0.2xx
dotnet watch與舊架構的 熱重新載入 不相容 行為變更 RC 1
dotnet workload 命令輸出變更 行為變更 Preview 1
不再記載 installer 存放庫版本 行為變更 Preview 5
以 .NET Framework 為目標時使用的新預設 RID 來源不相容 GA
終端記錄器是預設值 行為變更 Preview 1
.NET 9 SDK 的版本需求 來源不相容 GA
針對 .NET Standard 1.x 目標發出的警告 來源不相容 Preview 6
針對 .NET 7 目標發出的警告 來源不相容 GA

序列化

標題 變更類型 引進的版本
BinaryFormatter 一律會擲回 行為變更 Preview 6
可為空的 JsonDocument 屬性反序列化為 JsonValueKind.Null 行為變更 Preview 1

Windows Forms \(英文\)

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

WPF

標題 變更類型 引進的版本
GetXmlNamespaceMaps 類型變更 行為變更/來源不相容 Preview 3

另請參閱