.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
擴充
標題 | 二進位相容 | 來源相容 |
---|---|---|
將組態繫結至字典會擴充值 | ✔️ | ✔️ |
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 | ❌ | ✔️ |
WPF
標題 | 二進位相容 | 來源相容 | 回溯相容 |
---|---|---|---|
在文字編輯器上還原拖放作業行為 | ✔️ | ✔️ | ❌ |
XML 和 XSLT
標題 | 二進位相容 | 來源相容 |
---|---|---|
XmlSecureResolver 已淘汰 | ❌ | ❌ |