.NET 5 中的重大變更
若您要將應用程式移轉至 .NET 5,則可能會受此處列出的重大變更影響。 變更會依技術領域分組,例如 ASP.NET Core 或加密。
本文會表示各項中斷性變更為二進位相容或來源相容:
- 二進位相容 - 現有的二進位檔會在不重新編譯的情況下成功載入和執行,而且執行階段行為不會變更。
- 來源相容 - 以新執行階段為目標或使用新的 SDK 或元件時,原始程式碼會成功編譯且不會變更。
ASP.NET Core
程式碼分析
標題 | 二進位相容 | 來源相容 |
---|---|---|
CA1416 警告 | ✔️ | ❌ |
CA1417 警告 | ✔️ | ❌ |
CA1831 警告 | ✔️ | ❌ |
CA2013 警告 | ✔️ | ❌ |
CA2014 警告 | ✔️ | ❌ |
CA2015 警告 | ✔️ | ❌ |
CA2200 警告 | ✔️ | ❌ |
CA2247 警告 | ✔️ | ❌ |
Core .NET 程式庫
標題 | 二進位相容 | 來源相容 |
---|---|---|
單一檔案發佈的組件相關 API 變更 | ❌ | ✔️ |
BinaryFormatter 序列化方法已過時 | ✔️ | ❌ |
程式碼存取安全性 API 已過時 | ✔️ | ❌ |
CreateCounterSetInstance 擲回 InvalidOperationException | ✔️ | ❌ |
預設 ActivityIdFormat 為 W3C | ❌ | ✔️ |
Environment.OSVersion 傳回正確的版本 | ❌ | ✔️ |
FrameworkDescription 的值為 .NET 而不是 .NET Core | ✔️ | ❌ |
GAC API 已過時 | ✔️ | ❌ |
硬體內部 IsSupported 檢查 | ❌ | ✔️ |
IntPtr 與 UIntPtr 實作 IFormattable | ✔️ | ❌ |
LastIndexOf 處理空的搜尋字串 | ❌ | ✔️ |
Unix 上具有非 ASCII 字元的 URI 路徑 | ❌ | ✔️ |
具有非預設診斷識別碼的 API 淘汰 | ✔️ | ❌ |
ConsoleLoggerOptions 上的已過時屬性 | ✔️ | ❌ |
LINQ OrderBy.First 的複雜性 | ❌ | ✔️ |
已重新命名或移除 OSPlatform 屬性 | ✔️ | ❌ |
已移除 Microsoft.DotNet.PlatformAbstractions 套件 | ❌ | ✔️ |
PrincipalPermissionAttribute 已過時 | ✔️ | ❌ |
來自預覽版本的參數名稱變更 | ✔️ | ❌ |
參考元件中的參數名稱變更 | ✔️ | ❌ |
遠端處理 API 已過時 | ❌ | ✔️ |
Activity.Tags 的順序清單已反轉 | ✔️ | ❌ |
SSE 與 SSE2 比較方法會處理 NaN | ✔️ | ❌ |
Thread.Abort 已過時 | ✔️ | ❌ |
Unix 上 UNC 路徑的 Uri 識別 | ❌ | ✔️ |
UTF-7 程式碼路徑已過時 | ✔️ | ❌ |
Vector2.Lerp 與 Vector4.Lerp 的行為變更 | ✔️ | ❌ |
Vector<T> 擲回 NotSupportedException | ❌ | ✔️ |
密碼編譯
標題 | 二進位相容 | 來源相容 |
---|---|---|
瀏覽器不支援密碼編譯 API | ❌ | ✔️ |
Cryptography.Oid 為僅限初始化 | ✔️ | ❌ |
Linux 上的預設 TLS 加密套件 | ❌ | ✔️ |
密碼編譯抽象上的 Create() 多載已過時 | ✔️ | ❌ |
預設 FeedbackSize 值已變更 | ✔️ | ❌ |
Entity Framework Core
全球化
標題 | 二進位相容 | 來源相容 |
---|---|---|
在 Windows 上使用 ICU 程式庫 | ❌ | ✔️ |
StringInfo 與 TextElementEnumerator 符合 UAX29 規範 | ❌ | ✔️ |
Latin-1 字元的 Unicode 類別已變更 | ✔️ | ❌ |
TextInfo.ListSeparator 值已變更 | ✔️ | ❌ |
Interop
標題 | 二進位相容 | 來源相容 |
---|---|---|
已移除 WinRT 的支援 | ❌ | ✔️ |
將 RCW 轉換成 InterfaceIsIInspectable 會擲回例外狀況 | ❌ | ✔️ |
非 Windows 平台上沒有 A/W 尾碼探查 | ❌ | ✔️ |
網路
標題 | 二進位相容 | 來源相容 |
---|---|---|
Cookie 路徑處理符合 RFC 6265 | ✔️ | ❌ |
呼叫 SendToAsync 之後,LocalEndPoint 會更新 | ✔️ | ❌ |
MulticastOption.Group 不接受 Null | ✔️ | ❌ |
串流允許後續的 Begin 作業 | ❌ | ✔️ |
已從 .NET 執行階段移除 WinHttpHandler | ❌ | ✔️ |
SDK
安全性
標題 | 二進位相容 | 來源相容 |
---|---|---|
程式碼存取安全性 API 已過時 | ✔️ | ❌ |
PrincipalPermissionAttribute 已過時 | ✔️ | ❌ |
UTF-7 程式碼路徑已過時 | ✔️ | ❌ |
序列化
標題 | 二進位相容 | 來源相容 |
---|---|---|
BinaryFormatter.Deserialize 重新封裝例外狀況 | ✔️ | ❌ |
JsonSerializer.Deserialize 需要單一字元字串 | ✔️ | ❌ |
ASP.NET Core 應用程式還原序列化加上引號的數字 | ✔️ | ❌ |
JsonSerializer.Serialize 擲回 ArgumentNullException | ✔️ | ❌ |
非公用的無參數函式不會用於還原序列化 | ✔️ | ❌ |
序列化機碼值組時,會接受選項 | ✔️ | ❌ |
Windows Forms \(英文\)
標題 | 二進位相容 | 來源相容 |
---|---|---|
機器碼無法存取 Windows Forms 物件 | ✔️ | ❌ |
OutputType 設定為 WinExe | ❌ | ✔️ |
DataGridView 不會重設自訂字型 | ✔️ | ❌ |
方法擲回 ArgumentException | ✔️ | ❌ |
方法擲回 ArgumentNullException | ✔️ | ❌ |
屬性值回 ArgumentOutOfRangeException | ✔️ | ❌ |
TextFormatFlags.ModifyString 已過時 | ✔️ | ❌ |
DataGridView API 擲回 InvalidOperationException | ✔️ | ❌ |
WinForms 應用程式使用 Microsoft.NET.Sdk | ❌ | ✔️ |
已移除狀態列控制項 | ✔️ | ❌ |
WPF
標題 | 二進位相容 | 來源相容 |
---|---|---|
OutputType 設定為 WinExe | ❌ | ✔️ |
WPF 應用程式使用 Microsoft.NET.Sdk | ❌ | ✔️ |