共用方式為


.NET 5 的重大變更

如果您要將應用程式移轉至 .NET 5,此處列出的重大變更可能會影響您。 變更會依技術區域分組,例如 ASP.NET Core 或密碼編譯。

本文指出每個中斷性變更是 二進制相容原始碼相容

  • 二進位相容 - 現有的二進位檔能在不重新編譯的情況下順利載入並執行,執行時行為也不會改變。
  • 來源相容 - 原始碼會在目標為新的運行時間或使用新的 SDK 或元件時順利編譯,而不會變更。

ASP.NET Core

詳見 ASP.NET Core 5 中的重大變更

程式碼分析

標題 二進位相容 來源相容
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 的行為變更 ✔️
向量<T> 引發 NotSupportedException ✔️

密碼學

標題 二進位相容 來源相容
瀏覽器不支援密碼編譯 API ✔️
Cryptography.Oid 僅供初始化 ✔️
Linux 上的預設 TLS 加密套件 ✔️
密碼編譯抽象概念上的 Create() 多載已經過時 ✔️
已變更預設FeedbackSize值 ✔️

Entity Framework Core

請參閱 EF Core 5.0 的重大變更

全球化

標題 二進位相容 來源相容
在 Windows 上使用 ICU 連結庫 ✔️
StringInfo 和 TextElementEnumerator 符合 UAX29 標準 ✔️
Latin-1 字元的 Unicode 類別已變更 ✔️
TextInfo.ListSeparator 值已變更 ✔️

Interop

標題 二進位相容 來源相容
已移除 WinRT 的支援 ✔️
將 RCW 轉換成 InterfaceIsIInspectable 時會發生例外狀況 ✔️
非 Windows 平台無 A/W 後綴檢測 ✔️

網路

標題 二進位相容 來源相容
Cookie 路徑處理符合 RFC 6265 ✔️
LocalEndPoint 會在呼叫 SendToAsync 之後更新 ✔️
MulticastOption.Group 不接受 null ✔️
串流允許連續的 Begin 作業 ✔️
從 .NET 執行階段移除 WinHttpHandler ✔️

SDK

標題 二進位相容 來源相容
默認匯入的 Directory.Packages.props 檔案 ✔️
當可執行文件項目參考不相符的可執行檔時產生的錯誤 ✔️
FrameworkReference 被 Windows SDK 的 WindowsSdkPackageVersion 取代 ✔️
未定義預處理器符號NETCOREAPP3_1 ✔️
OutputType 設定為 WinExe ✔️
PublishDepsFilePath 行為變更 ✔️
將 TargetFramework 從 netcoreapp 改為 net ✔️
WinForms 和 WPF 應用程式使用 Microsoft.NET.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 ✔️

另請參閱