.NET 8 的重大變更
如果您要將應用程式移轉至 .NET 8,則可能會受此處列出的重大變更影響。 變更會依技術領域分組,例如 ASP.NET Core 或 Windows Forms。
本文會將每個重大變更分類為「二進位不相容」或「來源不相容」,或分類為「行為變更」:
二進位不相容 - 針對新的執行階段或元件執行時,現有的二進位檔可能會發生重大行為變更,例如載入或執行失敗,如果發生此情況,則需要重新編譯。
來源不相容 - 使用新的 SDK 或元件重新編譯,或以新的執行階段為目標時,現有的原始程式碼可能需要來源變更才能順利編譯。
行為變更 - 現有的程式碼和二進位檔在執行階段的行為可能不同。 如果不需要新的行為,則必須更新並重新編譯現有的程式碼。
ASP.NET Core
標題 | 變更類型 |
---|---|
ConcurrencyLimiterMiddleware 已淘汰 | 來源不相容 |
已移除序列化的自訂轉換器 | 行為變更 |
ISystemClock 已淘汰 | 來源不相容 |
最小 API:IFormFile 參數需要防偽檢查 | 行為變更 |
速率限制中介軟體需要 AddRateLimiter | 行為變更 |
安全性權杖事件會傳回 JsonWebToken | 行為變更 |
TrimMode 預設為針對 Web SDK 專案已滿 | 來源不相容 |
容器
標題 | 變更類型 |
---|---|
已從 Alpine 映像移除「ca-certificates」套件 | 二進位不相容 |
已升級至 Debian 12 的 Debian 容器映像 | 二進位不相容/行為變更 |
預設 ASP.NET Core 連接埠已變更為 8080 | 行為變更 |
已從 Alpine 和 Debian 映像移除 Kerberos 套件 | 二進位不相容 |
已從 Alpine 映像移除「libintl」套件 | 行為變更 |
多平台容器標籤僅限 Linux | 行為變更 |
Linux 映像中的新「應用程式」使用者 | 行為變更 |
Core .NET 程式庫
密碼編譯
標題 | 變更類型 | 推出的版本 |
---|---|---|
macOS 上的 AesGcm 驗證標記大小 | 行為變更 | Preview 1 |
RSA.EncryptValue 和 RSA.DecryptValue 已淘汰 | 來源不相容 | Preview 1 |
部署
標題 | 變更類型 |
---|---|
主機會決定 RID 特定資產 | 二進位不相容/行為變更 |
.NET 監視器只包含 distroless 映像 | 行為變更 |
StripSymbols 預設為 true | 行為變更 |
Entity Framework Core
擴充
全球化
標題 | 變更類型 |
---|---|
日期和時間轉換器接受文化特性引數 | 行為變更 |
TwoDigitYearMax 預設值為 2049 | 行為變更 |
Interop
標題 | 變更類型 |
---|---|
CreateObjectFlags.Unwrap 只在目標執行個體上取消換行 | 行為變更 |
自訂封送處理器需要其他成員 | 來源不相容 |
已移除 IDispatchImplAttribute API | 二進位不相容 |
已移除 JSFunctionBinding 隱含公用預設建構函式 | 二進位不相容 |
SafeHandle 類型必須具有公用建構函式 | 來源不相容 |
網路
標題 | 變更類型 |
---|---|
SendFile 會針對無連線通訊端擲回 NotSupportedException | 行為變更 |
比較 mailto: URI 中的使用者資訊 |
行為變更 |
反射
標題 | 變更類型 |
---|---|
IntPtr 不再用於函式指標型別 | 行為變更 |
SDK
標題 | 變更類型 |
---|---|
CLI 主控台輸出使用 UTF-8 | 行為變更/來源和二進位不相容 |
完成之後,主控台編碼不是 UTF-8 | 行為變更/二進位不相容 |
容器預設為使用「latest」標籤 | 行為變更 |
'dotnet pack' 使用 Release 設定 | 行為變更/來源不相容 |
'dotnet publish' 使用 Release 組態 | 行為變更/來源不相容 |
-getItem、-getProperty 和 -getTargetResult 的重複輸出 | 行為變更 |
不再新增 System.Net.Http 的隱含 using |
行為變更/來源不相容 |
MSBuild 自訂衍生的建置事件已被取代 | 行為變更 |
MSBuild 尊重 DOTNET_CLI_UI_LANGUAGE | 行為變更 |
執行階段特定應用程式未獨立 | 來源/二進位不相容 |
--arch 選項並不代表獨立 | 行為變更 |
「dotnet restore」會產生安全性弱點警告 | 行為變更 |
SDK 使用較小的 RID 圖形 | 行為變更/來源不相容 |
將 DebugSymbols 設定為 false 會停用 PDB 產生 | 行為變更 |
.NET SDK 中包含的 Source Link | 來源不相容 |
修剪可能無法與 .NET Standard 或 .NET Framework 搭配使用 | 行為變更 |
預設不會針對 .NET 工具安裝未列出的套件 | 行為變更 |
在外部組建中匯入的 .user 檔案 | 行為變更 |
.NET 8 SDK 的版本需求 | 來源不相容 |
序列化
標題 | 變更類型 |
---|---|
大部分專案的 BinaryFormatter 已停用 | 行為變更 |
PublishedTrimmed 專案失敗以反映為基礎的序列化 | 行為變更 |
以反映為基礎的還原序列化程式會積極地解析中繼資料 | 行為變更 |