.NET 6 中的重大變更

若您要將應用程式移轉至 .NET 6,則可能會受此處列出的重大變更影響。 變更會依技術領域分組,例如 ASP.NET Core 或 Windows Forms。

本文會表示各項中斷性變更為二進位相容來源相容

  • 二進位相容 - 現有的二進位檔會在不重新編譯的情況下成功載入和執行,而且執行階段行為不會變更。
  • 來源相容 - 以新執行階段為目標或使用新的 SDK 或元件時,原始程式碼會成功編譯且不會變更。

ASP.NET Core

標題 二進位相容 來源相容
ActionResult<T> 會將 StatusCode 設為 200 ✔️
AddDataAnnotationsValidation 方法已淘汰 ✔️
Microsoft.AspNetCore.App 共用架構的組件已移除 ✔️
Blazor:RequestImageFileAsync 方法中的參數名稱已變更 ✔️
Blazor:WebEventDescriptor.EventArgsType 屬性已取代
Blazor:位元組陣列 Interop ✔️
Changed MessagePack library in @microsoft/signalr-protocol-msgpack ✔️
ClientCertificate 屬性不會觸發 HttpSys 重新交涉 ✔️
EndpointName 中繼資料未自動設定 ✔️
身分識別:預設啟動程序版本的 UI 已變更
Kestrel:記錄訊息屬性已變更 ✔️
Microsoft.AspNetCore.Http.Features split ✔️
中介軟體:HTTPS 重新導向中介軟體會在不明確的 HTTPS 連接埠上擲回例外狀況 ✔️
中介軟體:多載的新用途 ✔️
RC 1 中的最小 API 重新命名
RC 2 中的最小 API 重新命名
使用 System.Text.Json 時,MVC 不會緩衝處理 IAsyncEnumerable 類型 ✔️
可為 Null 的參考型別註釋已變更 ✔️
淘汰和移除的 API ✔️
預設不會設定 PreserveCompilationContext ✔️
Razor:編譯器不再產生 Views 元件 ✔️
Razor:記錄識別碼變更 ✔️
Razor:Razor引擎 API 標記為過時 ✔️
SignalR:Java 用戶端已更新為 RxJava3 ✔️
TryParse 和 BindAsync 方法已經過驗證

容器

標題 二進位相容 來源相容
容器映像的預設主控台記錄器格式設定 ✔️

如需 .NET 6 中容器的其他重大變更資訊,請參閱 .NET 6 容器版本資訊

Core .NET 程式庫

標題 二進位相容 來源相容
具有非預設診斷識別碼的 API 已淘汰 ✔️
可為 Null 的參考型別註釋變更 ✔️
偵錯方法中的條件式字串評估 ✔️
Windows 上的 Environment.ProcessorCount 行為 ✔️
EventSource 回撥行為 ✔️ ✔️
Unix 上的 File.Replace 會擲回例外狀況以符合 Windows ✔️
FileStream 會在 Unix 上鎖定具有共用鎖定的檔案 ✔️
Filestream 不再與 OS 同步檔案位移
FileStream.Position 於 ReadAsync 或 WriteAsync 完成後更新
淘汰 API 的新診斷識別碼 ✔️
新的 System.Linq.Queryable 方法多載 ✔️
舊版架構已自套件內卸除 ✔️
參數名稱已變更 ✔️
Stream 衍生型別中的參數名稱 ✔️
DeflateStream、GZipStream 和 CryptoStream 中的部分和零位元組讀取 ✔️
在 Windows 上對唯讀檔案設定時間戳記 ✔️
標準數值格式剖析精確度 ✔️
介面中的靜態抽象成員 ✔️
StringBuilder.Append 多載和評估順序 ✔️
強式名稱 API 會擲回 PlatformNotSupportedException ✔️
System.Drawing.Common 僅於 Windows 上支援
System.Security.SecurityContext 標示為淘汰 ✔️
Task.FromResult 可能傳回單一項目 ✔️
來自 BackgroundService 的未處理例外狀況 ✔️

密碼編譯

標題 二進位相容 來源相容
CreateEncryptor 方法會針對不正確的意見反應大小擲回例外狀況 ✔️

部署

標題 二進位相容 來源相容
64 位元 Windows 上的 x86 主機路徑 ✔️ ✔️

Entity Framework Core

EF Core 6 中的重大變更

擴充

標題 二進位相容 來源相容
AddProvider 會檢查非 Null 提供者 ✔️
FileConfigurationProvider.Load 擲回 InvalidDataException ✔️
重複的 XML 元素包括索引 ✔️
解決已處置的 ServiceProvider 擲回例外狀況 ✔️

全球化

標題 二進位相容 來源相容
全球化非變異模式中的文化特性建立和案例對應

Interop

標題 二進位相容 來源相容
介面中的靜態抽象成員 ✔️

JIT 編譯器

標題 二進位相容 來源相容
根據 ECMA-335 強制呼叫引數 ✔️ ✔️

網路

標題 二進位相容 來源相容
已從 SPN 移除 Kerberos 和 Negotiate 的連接埠 ✔️
WebRequest、WebClient 和 ServicePoint 已淘汰 ✔️

SDK

標題 二進位相容 來源相容
dotnet run-p 選項已淘汰 ✔️
範本中的 C# 程式碼不受舊版支援 ✔️ ✔️
EditorConfig 檔案隱含包含 ✔️
針對 macOS 產生 apphost ✔️
在發行輸出中針對重複檔案產生錯誤 ✔️
GetTargetFrameworkProperties 和 GetNearestTargetFramework 已自 ProjectReference 通訊協定中移除 ✔️
ARM64 上模擬的 x64 安裝位置 ✔️
MSBuild 不再支援呼叫 GetType()
無法將 .NET 安裝至自訂位置 ✔️ ✔️
OutputType 不會自動設定為 WinExe ✔️
發佈 ReadyToRun 搭配 --no-restore 需要變更 ✔️
runtimeconfig.dev.json file not generated ✔️
如果未指定 self-contained,則 RuntimeIdentifier 會顯示警告 ✔️
根資料夾中的工具資訊清單 ✔️ ✔️
.NET 6 SDK 的版本需求 ✔️ ✔️
.version 檔案包含組建版本 ✔️ ✔️
將參考元件寫入 IntermediateOutputPath ✔️

序列化

標題 二進位相容 來源相容
還原序列化 -0 時,DataContractSerializer 保留符號 ✔️
TimeSpan 的預設序列化格式 ✔️
IAsyncEnumerable 序列化 ✔️
JSON 來源產生 API 重構 ✔️
集合屬性上的 JsonNumberHandlingAttribute ✔️
新的 JsonSerializer 來源產生器多載 ✔️

Windows Forms \(英文\)

標題 二進位相容 來源相容
C# 範本使用應用程式啟動程序 ✔️
選取的 TableLayoutSettings 屬性擲回 InvalidEnumArgumentException ✔️
DataGridView 相關 API 現在會擲回 InvalidOperationException ✔️
ListViewGroupCollection 方法擲回新的 InvalidOperationException ✔️
NotifyIcon。文字長度上限增加 ✔️
只有在需要時才呼叫 ScaleControl ✔️
部分 API 擲回 ArgumentNullException ✔️
如果在其他位置指派了節點,則 TreeNodeCollection.Item 會擲回例外狀況 ✔️

XML 和 XSLT

標題 二進位相容 來源相容
無效索引的 XNodeReader.GetAttribute 行為 ✔️

另請參閱