.NET 6 での破壊的変更

アプリを .NET 6 に移行する場合、ここに一覧表示されている破壊的変更が影響する可能性があります。 変更は、ASP.NET Core や Windows フォームなどのテクノロジ領域別にグループ化されています。

この記事では、各破壊的変更が "バイナリ互換" であるか、"ソース互換" であるかを示します。

  • バイナリ互換 - 既存のバイナリは再コンパイルなしで正常に読み込まれて実行され、実行時の動作は変化しません。
  • ソース互換 - 新しいランタイムを対象にしたり、新しい SDK やコンポーネントを使用したりする場合、ソース コードは変更なしで正常にコンパイルされます。

ASP.NET Core

Title バイナリ互換 ソース互換
ActionResult<T> は StatusCode を 200 に設定します ✔️
AddDataAnnotationsValidation メソッドの廃止 ✔️
Microsoft.AspNetCore.App 共有フレームワークから削除されたアセンブリ ✔️
Blazor: RequestImageFileAsync メソッドで変更されたパラメーター名 ✔️
Blazor: WebEventDescriptor.EventArgsType プロパティが置き換えられました
Blazor: バイト配列相互運用 ✔️
Changed MessagePack library in @microsoft/signalr-protocol-msgpack ✔️
ClientCertificate プロパティで HttpSys の再ネゴシエーションがトリガーされない ✔️
EndpointName メタデータが自動的に設定されない ✔️
ID: UI の既定の Bootstrap のバージョンが変更された
Kestrel: 変更されたログ メッセージ属性 ✔️
Microsoft.AspNetCore.Http.Features の分割 ✔️
ミドルウェア:HTTPS リダイレクト ミドルウェアがあいまいな HTTPS ポートで例外をスローする ✔️
ミドルウェア: 新しい Use オーバーロード ✔️
RC 1 での最小限の API の名前変更
RC 2 での最小限の API の名前変更
System.Text.Json を使用すると、MVC で IAsyncEnumerable 型がバッファーされない ✔️
null 許容参照型の注釈の変更 ✔️
古い API と削除された API ✔️
PreserveCompilationContext が既定で構成されない ✔️
Razor: コンパイラによって Views アセンブリが生成されなくなりました ✔️
Razor: ログ ID の変更 ✔️
Razor: Razor古いとしてマークされた Engine API ✔️
SignalR: Java クライアントの RxJava3 への更新 ✔️
TryParse および BindAsync メソッドが検証される

Containers

タイトル バイナリ互換 ソース互換
コンテナー イメージの既定のコンソール ロガーの書式設定 ✔️

.NET 6 のコンテナーに関するその他の破壊的変更については、「.NET 6 コンテナー リリース ノート」を参照してください。

Core .NET ライブラリ

Title バイナリ互換 ソース互換
既定以外の診断 ID を持つ API の旧型式化 ✔️
null 許容参照型の注釈の変更 ✔️
デバッグ メソッドでの条件付き文字列の評価 ✔️
Windows での Environment.ProcessorCount の動作 ✔️
EventSource コールバックの動作 ✔️ ✔️
Unix 上の File.Replace から Windows と同じ例外がスローされる ✔️
FileStream により Unix 上の共有ロックによってファイルがロックされる ✔️
FileStream でのファイル オフセットと OS の同期を廃止
ReadAsync または WriteAsync の完了後に FileStream.Position が更新される
古い API 用の新しい診断 ID ✔️
新しい System.Linq.Queryable メソッドのオーバーロード ✔️
パッケージから削除された古いバージョンのフレームワーク ✔️
パラメーター名の変更 ✔️
ストリーム派生型のパラメーター名 ✔️
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 での破壊的変更

Extensions

タイトル バイナリ互換 ソース互換
プロバイダーが null でないことが AddProvider によってチェックされる ✔️
FileConfigurationProvider.Load から InvalidDataException がスローされる ✔️
繰り返し XML 要素にインデックスが含まれる ✔️
破棄された ServiceProvider の解決により例外がスローされる ✔️

グローバリゼーション

Title バイナリ互換 ソース互換
グローバリゼーション インバリアント モードでのカルチャの作成とケース マッピング

Interop

タイトル バイナリ互換 ソース互換
インターフェイスの静的抽象メンバー ✔️

JIT コンパイラ

Title バイナリ互換 ソース互換
ECMA-335 に従って呼び出し引数を強制する ✔️ ✔️

ネットワーク

Title バイナリ互換 ソース互換
Kerberos と Negotiate の SPN からポートが削除されました ✔️
WebRequest、WebClient、ServicePoint は廃止されている ✔️

SDK

Title バイナリ互換 ソース互換
dotnet run-p オプションは非推奨です ✔️
テンプレートの C# コードが以前のバージョンでサポートされない ✔️ ✔️
暗黙的に含まれる EditorConfig ファイル ✔️
macOS 用の apphost を生成する ✔️
発行出力で重複するファイルのエラーを生成する ✔️
GetTargetFrameworkProperties と GetNearestTargetFramework が ProjectReference プロトコルから削除されました ✔️
Arm64 でエミュレートされた x64 のインストール場所 ✔️
MSBuild で GetType() の呼び出しがサポートされなくなった
.NET をカスタムの場所にインストールできない ✔️ ✔️
WinExe に OutputType が自動的に設定されない ✔️
--no-restore を使用した ReadyToRun の発行には変更が必要 ✔️
runtimeconfig.dev.json ファイルが生成されない ✔️
自己完結型が指定されていない場合の RuntimeIdentifier 警告 ✔️
ルート フォルダー内のツール マニフェスト ✔️ ✔️
.NET 6 SDK のバージョン要件 ✔️ ✔️
.version ファイルにビルド バージョンが含まれている ✔️ ✔️
IntermediateOutputPath に参照アセンブリを書き込む ✔️

シリアル化

Title バイナリ互換 ソース互換
DataContractSerializer が -0 を逆シリアル化する際に符号を保持する ✔️
TimeSpan の既定のシリアル化形式 ✔️
IAsyncEnumerable のシリアル化 ✔️
JSON ソース生成 API のリファクタリング ✔️
コレクション プロパティに対する JsonNumberHandlingAttribute ✔️
新しい JsonSerializer ソース ジェネレーターのオーバーロード ✔️

Windows フォーム

Title バイナリ互換 ソース互換
C# テンプレートでアプリケーション ブートストラップが使用される ✔️
選択された TableLayoutSettings プロパティで InvalidEnumArgumentException がスローされる ✔️
DataGridView 関連の API が InvalidOperationException をスローするようになった ✔️
ListViewGroupCollection メソッドが新しい InvalidOperationException をスローする ✔️
NotifyIcon。テキストの最大文字数の増加 ✔️
必要な場合にのみ、ScaleControl が呼び出される ✔️
一部の API によって ArgumentNullException がスローされる ✔️
ノードが別のものに割り当てられている場合、TreeNodeCollection.Item により例外がスローされる ✔️

XML と XSLT

タイトル バイナリ互換 ソース互換
XNodeReader.GetAttribute の無効なインデックスでの動作 ✔️

関連項目