如果您要將應用程式移轉至 .NET 8,則可能會受此處列出的重大變更影響。 變更會依技術領域分組,例如 ASP.NET Core 或 Windows Forms。
本文會將每個重大變更分類為「二進位不相容」或「來源不相容」,或分類為「行為變更」:
二進位不相容 - 針對新的執行階段或元件執行時,現有的二進位檔可能會發生重大行為變更,例如載入或執行失敗,如果發生此情況,則需要重新編譯。
來源不相容 - 使用新的 SDK 或元件重新編譯,或以新的執行階段為目標時,現有的原始程式碼可能需要來源變更才能順利編譯。
行為改變 ——現有程式碼與二進位檔在執行時可能有不同的行為。 如果不需要新的行為,則必須更新並重新編譯現有的程式碼。
ASP.NET Core
容器
| 標題 | 變更類型 |
|---|---|
| 已從 Alpine 映像移除「ca-certificates」套件 | 二元不相容 |
| 已升級至 Debian 12 的 Debian 容器映像 | 二進位不相容/行為變動 |
| 預設 ASP.NET Core 連接埠已變更為 8080 | 行為變更 |
| Kerberos 套件已從 Alpine 和 Debian 映像檔中移除 | 二元不相容 |
| 「libintl」套件已從 Alpine 映像中移除 | 行為變更 |
| 多平台容器標籤僅限 Linux | 行為變更 |
| Linux 映像中的新「應用程式」使用者 | 行為變更 |
Core .NET 程式庫
密碼編譯
| 標題 | 變更類型 | 引入 |
|---|---|---|
| macOS 上的 AesGcm 驗證標記大小 | 行為變更 | 預覽 1 |
| RSA.EncryptValue 和 RSA.DecryptValue 已淘汰 | 來源不相容 | 預覽 1 |
部署
| 標題 | 變更類型 |
|---|---|
| 主機決定 RID 特定的資產 | 二進位不相容/行為變動 |
| .NET 監視器僅包含「distro-less」映像檔 | 行為變更 |
| .NET 的 openSUSE 與 SLES 套件依賴 OpenSSL 3.x | 行為變更 |
| StripSymbols 預設為 true | 行為變更 |
Entity Framework Core
詳見 EF Core 8中的重大變更。
擴充套件
全球化
| 標題 | 變更類型 |
|---|---|
| 日期和時間轉換器考慮文化特性引數 | 行為變更 |
| TwoDigitYearMax 預設值為 2049 | 行為變更 |
Interop
| 標題 | 變更類型 |
|---|---|
| CreateObjectFlags.Unwrap 只在目標執行個體上取消換行 | 行為變更 |
| 自訂封送處理器需要其他成員 | 來源不相容 |
| 已移除 IDispatchImplAttribute API | 二進制不相容 |
| 已移除 JSFunctionBinding 隱含公用預設建構函式 | 二元不相容 |
| SafeHandle 類型必須具有公用建構函式 | 來源不相容 |
Linux 本機函式庫解析不再使用 netcoredeps |
行為變更 |
網路
| 標題 | 變更類型 |
|---|---|
| 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」會產生安全性弱點警告 | 行為變更 |
| 「dotnet list 套件」會在來源未提供弱點資料時發出警告 | 行為變更 |
| SDK 使用較小的 RID 圖形 | 行為變更/來源不相容 |
| 將 DebugSymbols 設定為 false 會停用 PDB 產生 | 行為變更 |
| .NET SDK 中包含的 Source Link | 來源不相容 |
| 修剪可能無法與 .NET Standard 或 .NET Framework 搭配使用 | 行為變更 |
| .NET 工具的預設設定不會安裝未列出的套件 | 行為變更 |
| 在外部組建中匯入的 .user 檔案 | 行為變更 |
| .NET 8 SDK 的版本需求 | 來源不相容 |
序列化
| 標題 | 變更類型 |
|---|---|
| 大部分專案的 BinaryFormatter 已停用 | 行為變更 |
| PublishedTrimmed 專案無法進行基於反射的序列化 | 行為變更 |
| 以反映為基礎的還原序列化程式會積極地解析中繼資料 | 行為變更 |