.NET 8 の破壊的変更

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

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

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

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

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

ASP.NET Core

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

Containers

タイトル 変更の種類
Alpine イメージから削除された 'ca-certificates' パッケージ バイナリ非互換
Debian 12 にアップグレードされた Debian コンテナー イメージ バイナリ非互換/動作の変化
既定の ASP.NET Core ポートが 8080 に変更されました 動作の変更
dotnet テストには、コンテナー内の書き込み可能な VSTest 成果物の基本ディレクトリが必要です 動作の変更
Alpine イメージと Debian イメージから削除された Kerberos パッケージ バイナリ非互換
Alpine イメージから削除された 'libintl' パッケージ 動作の変更
マルチプラットフォーム コンテナー タグは Linux 専用です 動作の変更
Linux イメージの新しい 'app' ユーザー 動作の変更

Core .NET ライブラリ

タイトル 変更の種類
null の場合のアクティビティ操作名 動作の変更
AnonymousPipeServerStream.Dispose の動作 動作の変更
カスタム診断 ID を使用した API の廃止 ソースに互換性がありません
Unix ファイル パスでのバックスラッシュ マッピング 動作の変更
Base64.DecodeFromUtf8 メソッドは空白を無視します 動作の変更
ブール値に基づく列挙型のサポートが削除されました 動作の変更
Complex.ToString 形式が次の形式に変更されました <a; b> 動作の変更
ドライブの現在のディレクトリ パスの列挙 動作の変更
Enumerable.Sum が一部の入力に対して新たに OverflowException をスローする 動作の変更
パイプが閉じられているときの FileStream への書き込み 動作の変更
FindSystemTimeZoneById が新しいオブジェクトを返さない 動作の変更
GC.GetGeneration は Int32.MaxValue を返す可能性があります 動作の変更
Unix での GetFolderPath の動作 動作の変更
GetSystemVersion から ImageRuntimeVersion が返されなくなりました 動作の変更
ITypeDescriptorContext null 許容参照型注釈 ソースに互換性がありません
.NET Standard / .NET Framework では利用不可のLDAP API バイナリ非互換
Legacy Console.ReadKey の削除 動作の変更
メソッド ビルダーでは、HasDefaultValue が false に設定されたパラメーターが生成されます 動作の変更
Unix では、名前付きミューテックスは既定でユーザー スコープに設定されます 動作の変更
System.IO.Packaging でパッケージ パーツ URI が大文字と小文字を区別せずに比較されるようになりました 動作の変更
UseShellExecute が false の場合に ProcessStartInfo.WindowStyle が反映される 動作の変更
RuntimeIdentifier は、ランタイムがビルドされたプラットフォームを返します 動作の変更
Type.GetType すべての無効な要素の型に対して例外をスローします 動作の変更

暗号化

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

配置

タイトル 変更の種類
ホストによって RID 固有のアセットが決定される バイナリ非互換/動作の変化
.NET モニターには、distroless イメージのみが含まれています 動作の変更
openSUSE および SLES の.NET パッケージは、OpenSSL 3.x に依存します 動作の変更
StripSymbols の既定値は true です 動作の変更

Entity Framework Core

EF Core 8 の破壊的変更を参照してください。

拡張機能

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

グローバリゼーション

タイトル 変更の種類
日付と時刻のコンバーターがカルチャ引数を考慮する 動作の変更
TwoDigitYearMax の既定値は 2049 動作の変更

相互運用機能

タイトル 変更の種類
CreateObjectFlags.Unwrap only unwraps on target instance 動作の変更
カスタム マーシャラーには追加のメンバーが必要 ソースに互換性がありません
IDispatchImplAttribute API が削除されました バイナリ非互換
JSFunctionBinding の暗黙的なパブリック既定コンストラクターの削除 バイナリ非互換
SafeHandle 型にはパブリック コンストラクターが必要です ソースに互換性がありません
Linux ネイティブ ライブラリの解決では、netcoredeps は使用されなくなりました 動作の変更

ネットワーク

タイトル 変更の種類
SendFile がコネクションレス ソケットに対して NotSupportedException をスローする 動作の変更
mailto: URI のユーザー情報を比較する 動作の変更

リフレクション

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

SDK

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

シリアル化

タイトル 変更の種類
ほとんどのプロジェクトで BinaryFormatter が無効になっている 動作の変更
PublishedTrimmed projects ではリフレクション ベースのシリアル化が失敗する 動作の変更
リフレクション ベースのデシリアライザーはメタデータを先行して解決する 動作の変更

Windows フォーム

タイトル 変更の種類
PictureBox でリモート イメージを読み込む前に証明書を確認 動作の変更
DateTimePicker.Text が空の文字列です 動作の変更
DefaultValueAttribute が一部のプロパティから削除されました 動作の変更
ExceptionCollection ctor が ArgumentException をスローする 動作の変更
AutoScaleMode に従ってフォームをスケーリングする 動作の変更
ImageList.ColorDepth の既定値は Depth32Bit です 動作の変更
System.Windows.Extensions は System.Drawing.Common を参照していない ソースに互換性がありません
TableLayoutStyleCollection が ArgumentException をスローする 動作の変更
トップレベル フォームは、最小サイズと最大サイズを DPI にスケーリングします 動作の変更
WFDEV002の廃止はエラーになりました ソースに互換性がありません

関連項目