.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 ライブラリ
暗号化
タイトル | 変更の種類 | 導入時期 |
---|---|---|
macOS での AesGcm 認証タグのサイズ | 動作の変更 | Preview 1 |
RSA.EncryptValue と RSA.DecryptValue の廃止 | ソースに互換性がありません | Preview 1 |
デプロイ
タイトル | 変更の種類 |
---|---|
ホストが RID 固有の資産を決定する | バイナリの互換性がない動作の変更 |
.NET Monitor にはディストリビューションレス イメージのみ含まれます | 動作の変更 |
StripSymbols の既定値が true になりました | 動作の変更 |
Entity Framework Core
Extensions
グローバリゼーション
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 グラフを使う | 動作の変更、またはソースに互換性がない |
DebugSymbols を false に設定すると PDB の生成が無効になる | 動作の変更 |
Source Link が .NET SDK に含まれるようになりました | ソースに互換性がありません |
トリミングは、.NET Standard または .NET Framework では使用できません | 動作の変更 |
.NET ツールについて非記載パッケージが既定でインストールされない | 動作の変更 |
外部ビルドにインポートされるようになった .user ファイル | 動作の変更 |
.NET 8 SDK のバージョン要件 | ソースに互換性がありません |
シリアル化
Title | 変更の種類 |
---|---|
ほとんどのプロジェクトで BinaryFormatter が無効になりました | 動作の変更 |
PublishedTrimmed プロジェクトがリフレクション ベースのシリアル化に失敗する | 動作の変更 |
リフレクション ベースの逆シリアライザーによってメタデータが一括で解決される | 動作の変更 |
Windows フォーム
Title | 変更の種類 |
---|---|
アンカー レイアウトの変更 | 動作の変更 |
PictureBox にリモート イメージを読み込む前にチェックされた証明書 | 動作の変更 |
DateTimePicker.Text は空の文字列です | 動作の変更 |
一部のプロパティから DefaultValueAttribute が削除されました | 動作の変更 |
ExceptionCollection コンストラクターが ArgumentException をスローする | 動作の変更 |
フォームが AutoScaleMode に従ってスケーリングされる | 動作の変更 |
ImageList.ColorDepth の既定値が Depth32Bit に | 動作の変更 |
System.Windows.Extensions が System.Drawing.Common を参照していない | ソースに互換性がありません |
TableLayoutStyleCollection が ArgumentException をスローする | 動作の変更 |
最上位のフォームは、最小および最大サイズを DPI にスケーリングする | 動作の変更 |
WFDEV002 の形式がエラーになった | ソースに互換性がありません |
関連項目
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET