.NET 7 的重大變更

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

本文會表示各項中斷性變更為二進位相容來源相容

  • 二進位相容 - 現有的二進位檔會在不重新編譯的情況下成功載入和執行,而且執行階段行為不會變更。
  • 來源相容 - 以新執行階段為目標或使用新的 SDK 或元件時,原始程式碼會成功編譯且不會變更。

ASP.NET Core

標題 二進位相容 來源相容
API 控制器動作嘗試從 DI 推斷參數 ✔️
ASPNET 前置詞環境變數優先順序 ✔️ ✔️
遠端驗證提供者的 AuthenticateAsync ✔️
WebAssembly 應用程式中的驗證 ✔️
預設驗證配置 ✔️
某些 Microsoft.AspNetCore.Mvc.Core 記錄訊息的事件識別碼已變更 ✔️
後援檔案端點 ✔️
IHubClients 和 IHubCallerClients 隱藏成員 ✔️
KestrelKestrel:預設 HTTPS 繫結已移除 ✔️
Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv 和 libuv.dll 已移除
Microsoft.Data.SqlClient 已更新為 4.0.1 ✔️
中介軟體不再延遲至具有 Null 要求委派的端點 ✔️
MVC 在模型繫結中偵測空的主體的方式已變更 ✔️
輸出快取 API 變更
SignalR Service 中樞方法試圖解析 DI 中的參數 ✔️

Core .NET 程式庫

標題 二進位相容 來源相容
具有預設診斷識別碼的 API 淘汰 ✔️
具有非預設診斷識別碼的 API 淘汰 ✔️
BinaryFormatter 序列化 API 產生編譯器錯誤 ✔️
BrotliStream 不再允許未定義的 CompressionLevel 值 ✔️
Visual Studio 中的 C++/CLI 專案 ✔️
反映叫用 API 例外狀況的變更 ✔️
不可回收的 AssemblyLoadContext 中的可回收組件 ✔️
DateTime 加法方法精確度變更 ✔️ ✔️
NaN 的 Equals 方法行為變更 ✔️
EventSource 回撥行為 ✔️ ✔️
PatternContext<T> 上的泛型型別條件約束
舊版 Filestream 策略已移除 ✔️
舊版架構的程式庫支援
數值格式字串的最大精確度 ✔️
已更正範圍的 Regex 模式 ✔️ ✔️
SerializationFormat.Binary 已淘汰
已移除 System.Drawing.Comon 組態參數 ✔️ ✔️
System.Runtime.CompilerServices.Unsafe NuGet 封裝 ✔️ ✔️
符號連結上的時間欄位 ✔️
追蹤連結快取項目 ✔️
驗證 BrotliStream 的 CompressionLevel ✔️

組態

標題 二進位相容 來源相容
app.config 中的 System.diagnostics 項目 ✔️

密碼編譯

標題 二進位相容 來源相容
解密 EnvelopedCms 不會重複取消換行 ✔️
動態 X509ChainPolicy 驗證時間 ✔️
對易記名稱進行 X500DistinguishedName 剖析 ✔️

部署

標題 二進位相容 來源相容
預設會修剪所有組件 ✔️
多層級查閱已停用 ✔️
64 位元 Windows 上的 x86 主機路徑 ✔️ ✔️
TrimmerDefaultAction 已淘汰 ✔️

Entity Framework Core

EF Core 7 中的中斷性變更

擴充

標題 二進位相容 來源相容
將組態繫結至字典會擴充值 ✔️ ✔️
Windows Shell 所啟動應用程式的 ContentRootPath ✔️
環境變數前置詞 ✔️

全球化

標題 二進位相容 來源相容
全球化 API 在 Windows Server 上使用 ICU 程式庫 ✔️

Interop

標題 二進位相容 來源相容
模擬下的 RuntimeInformation.OSArchitecture ✔️

.NET MAUI

標題 二進位相容 來源相容
建構函式接受基底介面,而不是具體型別 ✔️
流量方向協助程式方法已移除
新增 UpdateBackground 參數 ✔️
ScrollToRequest 屬性已重新命名
部分 Windows API 已移除

網路

標題 二進位相容 來源相容
AllowRenegotiation 預設值為 false
Linux 上的自訂 Ping 承載 ✔️
Socket.End 方法不會擲回 ObjectDisposedException ✔️

SDK 和 MSBuild

標題 二進位相容 來源相容
特定專案的自動 RuntimeIdentifier ✔️
僅供發佈的自動 RuntimeIdentifier
CLI 主控台輸出使用 UTF-8
完成之後,主控台編碼不是 UTF-8 ✔️
.NET 7 中自訂型別的 MSBuild 序列化
並存 SDK 安裝項目
根資料夾中的工具資訊清單 ✔️ ✔️
.NET 7 SDK 的版本需求 ✔️ ✔️
dotnet 測試:將 -a 切換為別名 --arch,而不是 --test-adapter-path
dotnet 測試:將 -r 切換為別名 --runtime,而不是 --results-dir
--output 選項不再對解決方案層級命令有效
SDK 不再呼叫 ResolvePackageDependencies ✔️

序列化

標題 二進位相容 來源相容
還原序列化 -0 時,DataContractSerializer 保留符號 ✔️
使用前置或尾端空格將版本型別還原序列化 ✔️
JsonSerializerOptions 複製建構函式包含 JsonSerializerContext ✔️
物件型別的多型序列化 ✔️
System.Text.Json 來源產生器後援 ✔️

Windows Forms \(英文\)

標題 二進位相容 來源相容
淘汰和警告 ✔️
部分 API 擲回 ArgumentNullException ✔️

XML 和 XSLT

標題 二進位相容 來源相容
XmlSecureResolver 已淘汰

另請參閱