.NET 6 での破壊的変更

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

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

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

ASP.NET Core

ASP.NET Core 6 の破壊的変更を参照してください。

Containers

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

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

Core .NET ライブラリ

タイトル バイナリ互換 ソース互換
既定以外の診断 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 の破壊的変更を参照してください。

拡張機能

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

グローバリゼーション

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

相互運用機能

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

JIT コンパイラ

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

ネットワーク

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

SDK

タイトル バイナリ互換 ソース互換
-p の dotnet run オプションは非推奨です ✔️ ❌
テンプレートの 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 に参照アセンブリを書き込む ❌ ✔️

シリアル化

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

Windows フォーム

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

XML と XSLT

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

関連項目