共用方式為


.NET 10 的重大變更

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

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

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

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

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

Note

本文是進行中的工作。 這不是 .NET 10 中重大變更的完整清單。

ASP.NET Core

Title 變更類型
已停用已知 API 端點的 Cookie 登入重新導向 行為變更
取代WithOpenApi擴充方法 來源不相容
當 TryHandleAsync 傳回 true 時,會隱藏例外狀況診斷 行為變更
IActionContextAccessor 和 ActionContextAccessor 已過時 來源不相容/行為變更
IncludeOpenAPIAnalyzers 屬性和MVC API分析器已被取代 來源不相容
IPNetwork 和 ForwardedHeadersOptions.KnownNetworks 已過時 來源不相容
Microsoft.Extensions.ApiDescription.Client 套件已被取代 來源不相容
Razor 執行時編譯已過時 來源不相容
WebHostBuilder、IWebHost 和 WebHost 已過時 來源不相容

容器

Title 變更類型
預設的 .NET 映像使用 Ubuntu 行為變更

Core.NET 連結庫

Title 變更類型
ActivitySource.CreateActivity 和 ActivitySource.StartActivity 行為變更 行為變更
Arm64 SVE 無故障負載需要遮罩 二進位/來源不相容
BufferedStream.WriteByte 不再執行隱含排清 行為變更
C# 14 包含 Span 參數的多載解析 行為變更
泛型數學 中的一致轉移行為 行為變更
預設追蹤內容傳播器已更新至符合 W3C 標準 行為變更
DriveInfo.DriveFormat 會傳回 Linux 檔案系統類型 行為變更
從 DefaultValueAttribute ctor 中移除的 DynamicallyAccessedMembers 註釋 二進位/來源不相容
InlineArray 不允許明確結構大小 二進制不相容
FilePatternMatch.Stem 變更為不可為 Null 來源不相容/行為變更
GnuTarEntry 和 PaxTarEntry 預設不再包含 atime 和 ctime 行為變更
LDAP DirectoryControl 解析現在更嚴格 行為變更
MacCatalyst 版本正規化 行為變更
.NET 執行階段不再提供預設終止訊號處理常式 行為變更
核心函式庫中包含的 System.Linq.AsyncEnumerable 來源不相容
Type.MakeGenericSignatureType 引數驗證 行為變更

Cryptography

Title 變更類型
CompositeMLDsa 更新至 draft-08 行為變更
CoseSigner.Key 可以是 null 行為/源代碼不相容變更
MLDsa 和 SlhDsa 'SecretKey' 成員更名為 來源不相容
macOS 不支援 OpenSSL 密碼編譯基本類型 行為變更
Unix 上需要 OpenSSL 1.1.1 或更高版本 行為變更
X500DistinguishedName 驗證更嚴格 行為變更
X509Certificate 和 PublicKey 金鑰參數可以是 null 行為/源代碼不相容變更
已將環境變數重新命名為 DOTNET_OPENSSL_VERSION_OVERRIDE 行為變更

Entity Framework Core

EF Core 10 中的重大變更

Extensions

Title 變更類型
BackgroundService 會將整個 ExecuteAsync 當作一個任務來執行 行為變更
使用 AnyKey 解決 GetKeyedService() 和 GetKeyedServices() 中的問題 行為變更
組態中保留的 Null 值 行為變更
主控台記錄輸出中不再重複的訊息 行為變更
ProviderAliasAttribute 已移至 Microsoft.Extensions.Logging.Abstractions 元件 來源不相容
已從 trim-unsafe Microsoft.Extensions.Configuration 程式代碼中移除 DynamicallyAccessedMembers 註釋 二進制不相容

Globalization

Title 變更類型
環境變數 已重新命名為 DOTNET_ICU_VERSION_OVERRIDE 行為變更

安裝工具

Title 變更類型
適用於 VS Code 的 dotnet.acquire API 不再一律下載最新的 行為變更

Interop

Title 變更類型
將 IDispatchEx COM 物件投射為 IReflect 失敗 行為變更
單一檔案應用程式不再尋找可執行檔目錄中的原生連結庫 行為變更
指定 DllImportSearchPath.AssemblyDirectory 只會搜尋元件目錄 行為變更

網路

Title 變更類型
使用 PublishTrimmed 時,預設會停用 HTTP/3 支援 來源不相容
默認在瀏覽器 HTTP 用戶端中啟用串流 HTTP 回應 行為變更
Uri 長度限制已移除 行為變更

反射

Title 變更類型 新推出的版本
InvokeMember/FindMembers/DeclaredMembers 上更多受限制的註釋 行為/來源不相容

SDK 和 MSBuild

Title 變更類型
在使用者案例中,.NET CLI --interactive 預設為true 行為變更
dotnet CLI 命令將非命令相關資料記錄到 stderr 行為變更
.NET 工具封裝會建立 RuntimeIdentifier 特定的工具套件 行為變更
預設工作負載組態從「鬆散指令清單」到「工作負載集」模式 行為變更
程式碼涵蓋範圍 EnableDynamicNativeInstrumentation 預設為 false 行為變更
dnx.ps1 檔案不再包含在 .NET SDK 中 來源不相容
dotnet new sln 預設為 SLNX 檔案格式 行為變更
dotnet package list 執行還原 行為變更
dotnet restore 審核傳遞性套件 行為變更
dotnet tool install --local 預設會建立資訊清單 行為變更
dotnet watch 記錄到 stderr 而不是 stdout 行為變更
project.json 不支援 dotnet restore 來源不相容
SHA-1 指紋支援已棄用 dotnet nuget sign 行為變更
MSBUILDCUSTOMBUILDEVENTWARNING 逃生艙已移除 行為變更
MSBuild 自定義文化特性資源處理 行為變更
NU1510 是為了 NuGet 移除的直接參考而觸發 來源不相容
沒有執行階段資產的 NuGet 套件不會包含在 deps.json 來源不相容
PackageReference 沒有指定版本會引發錯誤 行為變更
PrunePackageReference 將直接可預備的參照私有化 行為變更
dotnet package listdotnet package search 中的 HTTP 警告升級為錯誤 行為/源代碼不相容變更
已移除NUGET_ENABLE_ENHANCED_HTTP_RETRY環境變數 行為變更
NuGet 會記錄無效套件識別碼的錯誤 行為變更
ToolCommandName 未對非工具套件進行設定 來源不相容

Serialization

Title 變更類型
System.Text.Json 會檢查屬性名稱衝突 行為變更
XmlSerializer 不再忽略標示為 ObsoleteAttribute 的屬性 行為變更

Windows Forms

Title 變更類型
API 已淘汰功能 來源不相容
同時參考 WPF 和 WinForms 的應用程式必須區分 MenuItem 和 ContextMenu 類型 來源不相容
HtmlElement.InsertAdjacentElement 中的已重新命名參數 來源不相容
TreeView 複選框影像截斷 行為變更
StatusStrip 預設會使用系統繪製模式 行為變更
System.Drawing OutOfMemoryException 已改為 ExternalException 行為變更

Windows Presentation Foundation (WPF)

Title 變更類型
不允許空白的 ColumnDefinitions 和 RowDefinitions 來源不相容
DynamicResource 的使用不正確會導致應用程式當機 來源不相容/行為變更