Share via


.NET 8 の破壊的変更

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

この記事では、各破壊的変更を "バイナリ非互換"、"ソース非互換"、"動作変更" として分類しています。

  • バイナリ非互換 - 新しいランタイムまたはコンポーネントに対して実行すると、既存のバイナリで、読み込みまたは実行の失敗など動作の破壊的変更が発生する場合があり、その場合は再コンパイルが必要になります。

  • ソース非互換 - 新しい SDK またはコンポーネントを使用して再コンパイルするとき、または新しいランタイムをターゲットにした場合、既存のソース コードでコンパイルを正常に行うためにソースの変更が必要になる場合があります。

  • 動作変更 - 実行時に既存のコードとバイナリの動作が異なる場合があります。 新しい動作が望ましくない場合は、既存のコードを更新して再コンパイルする必要があります。

ASP.NET Core

Title 変更の種類
ConcurrencyLimiterMiddleware が廃止されました ソースに互換性がありません
シリアル化用のカスタム コンバーターが削除されました 動作の変更
ISystemClock は廃止されました ソースに互換性がありません
最小限の API: IFormFile パラメーターには偽造防止検査が必要 動作の変更
レート制限ミドルウェアに AddRateLimiter が必要になりました 動作の変更
セキュリティ トークン イベントが JSonWebToken を返す 動作の変更
Web SDK プロジェクトで TrimMode の 既定値が full になる ソースに互換性がありません

Containers

Title 変更の種類
Alpine イメージから削除された 'ca-certificates' パッケージ バイナリ非互換
Debian コンテナー イメージが Debian 12 にアップグレードされました バイナリの互換性がない動作の変更
既定の ASP.NET Core ポートが 8080 に変更される 動作の変更
Alpine イメージと Debian イメージから削除された Kerberos パッケージ バイナリ非互換
Alpine イメージから削除された [libintl] パッケージ 動作の変更
マルチプラットフォーム コンテナー タグは Linux 専用 動作の変更
Linux イメージの新しい [アプリ] ユーザー 動作の変更

Core .NET ライブラリ

Title 変更の種類
null の場合のアクティビティ操作名 動作の変更
AnonymousPipeServerStream.Dispose の動作 動作の変更
カスタム診断 ID を使用した API の旧型式化 ソースに互換性がありません
Unix ファイル パスでのバックスラッシュ マッピング 動作の変更
Base64.DecodeFromUtf8 メソッドは空白を無視する 動作の変更
ブール値に基づく列挙型のサポートの削除 動作の変更
ドライブの現在のディレクトリ パスの列挙 動作の変更
Enumerable.Sum が一部の入力に対して新しい OverflowException をスローする 動作の変更
パイプが閉じられたときに FileStream の書き込みが行われます 動作の変更
FindSystemTimeZoneById が新しいオブジェクトを返さない 動作の変更
GC.GetGeneration が Int32.MaxValue を返す場合があります 動作の変更
Unix での GetFolderPath の動作 動作の変更
GetSystemVersion から ImageRuntimeVersion が返されなくなりました 動作の変更
ITypeDescriptorContext null 許容注釈 ソースに互換性がありません
レガシ Console.ReadKey が削除されました 動作の変更
メソッド ビルダーは、HasDefaultValue を false に設定してパラメーターを生成します 動作の変更
UseShellExecute が false のときに ProcessStartInfo.WindowStyle が適用される 動作の変更
ランタイムがビルドされたプラットフォームが RuntimeIdentifier から返される 動作の変更
Type.GetType がすべての無効な要素型に対して例外をスローする 動作の変更

暗号化

タイトル 変更の種類 導入時期
macOS での AesGcm 認証タグのサイズ 動作の変更 Preview 1
RSA.EncryptValue と RSA.DecryptValue の廃止 ソースに互換性がありません Preview 1

デプロイ

タイトル 変更の種類
ホストが RID 固有の資産を決定する バイナリの互換性がない動作の変更
.NET Monitor にはディストリビューションレス イメージのみ含まれます 動作の変更
StripSymbols の既定値が true になりました 動作の変更

Entity Framework Core

EF Core 8 での破壊的変更

Extensions

タイトル 変更の種類
ActivatorUtilities.CreateInstance が一貫して動作する 動作の変更
ActivatorUtilities.CreateInstance に null 以外のプロバイダーが必要になる 動作の変更
値の不一致に対して ConfigurationBinder でスローされる 動作の変更
ConfigurationManager パッケージは System.Security.Permissions を参照しなくなりました ソースに互換性がありません
DirectoryServices パッケージは System.Security.Permissions を参照しなくなりました ソースに互換性がありません
構成バインダーによって空のキーがディクショナリに追加される 動作の変更
HostApplicationBuilder コンストラクターによって考慮される HostApplicationBuilderSettings.Args 動作の変更
ManagementDateTimeConverter.ToDateTime はローカル時刻を返します 動作の変更
System.Formats.Cbor DateTimeOffset の書式設定の変更 動作の変更

グローバリゼーション

Title 変更の種類
日時のコンバーターがカルチャ引数を遵守するようになりました 動作の変更
TwoDigitYearMax の既定値は 2049 動作の変更

Interop

Title 変更の種類
CreateObjectFlags.Unwrap によってターゲット インスタンス上でのみ折り返しが解除される 動作の変更
カスタム マーシャラーには追加のメンバーが必要 ソースに互換性がありません
IDispatchImplAttribute API が削除されました バイナリ非互換
JSFunctionBinding の暗黙的なパブリック既定コンストラクターの削除 バイナリ非互換
SafeHandle 型にはパブリック コンストラクターが必要である ソースに互換性がありません

ネットワーク

Title 変更の種類
SendFile がコネクションレス ソケットに対して NotSupportedException をスローする 動作の変更

リフレクション

タイトル 変更の種類
IntPtr が関数ポインター型に使用されなくなりました 動作の変更

SDK

Title 変更の種類
CLI コンソール出力での UTF-8 の使用 動作の変更/ソースとバイナリに互換性がありません
完了後にコンソール エンコードが UTF-8 ではなくなる 動作の変更/バイナリに互換性がありません
コンテナーでは既定で 'latest' タグが使用される 動作の変更
'dotnet pack' では Release 構成が使用される 動作の変更、またはソースに互換性がない
'dotnet publish' では Release 構成が使用される 動作の変更、またはソースに互換性がない
-getItem、-getProperty、-getTargetResult の出力を複製する 動作の変更
System.Net.Http の暗黙的な using が追加されなくなりました 動作の変更、またはソースに互換性がない
非推奨となった MSBuild カスタム派生ビルド イベント 動作の変更
MSBuild は DOTNET_CLI_UI_LANGUAGE を使用する 動作の変更
自己完結型ではないランタイム固有のアプリ ソースとバイナリに互換性がない
--arch オプションは自己完結型を意味しません 動作の変更
"dotnet restore" によってセキュリティの脆弱性の警告が生成される 動作の変更
SDK で小さい RID グラフを使う 動作の変更、またはソースに互換性がない
Source Link が .NET SDK に含まれるようになりました ソースに互換性がありません
トリミングは、.NET Standard または .NET Framework では使用できません 動作の変更
.NET ツールについて非記載パッケージが既定でインストールされない 動作の変更
外部ビルドにインポートされるようになった .user ファイル 動作の変更
.NET 8 SDK のバージョン要件 ソースに互換性がありません

シリアル化

Title 変更の種類
ほとんどのプロジェクトで BinaryFormatter が無効になりました 動作の変更
PublishedTrimmed プロジェクトがリフレクション ベースのシリアル化に失敗する 動作の変更
リフレクション ベースの逆シリアライザーによってメタデータが一括で解決される 動作の変更

Windows フォーム

Title 変更の種類
アンカー レイアウトの変更 動作の変更
PictureBox にリモート イメージを読み込む前にチェックされた証明書 動作の変更
一部のプロパティから DefaultValueAttribute が削除されました 動作の変更
ExceptionCollection コンストラクターが ArgumentException をスローする 動作の変更
フォームが AutoScaleMode に従ってスケーリングされる 動作の変更
ImageList.ColorDepth の既定値が Depth32Bit に 動作の変更
System.Windows.Extensions が System.Drawing.Common を参照していない ソースに互換性がありません
TableLayoutStyleCollection が ArgumentException をスローする 動作の変更
最上位のフォームは、最小および最大サイズを DPI にスケーリングする 動作の変更
WFDEV002 の形式がエラーになった ソースに互換性がありません

関連項目