アプリを .NET 7 に移行する場合、ここに一覧表示されている破壊的変更が影響する可能性があります。 変更は、ASP.NET Core や Windows フォームなどのテクノロジ領域別にグループ化されています。
この記事では、各破壊的変更を "バイナリ非互換"、"ソース非互換"、"動作変更" として分類しています。
バイナリ非互換 - 新しいランタイムまたはコンポーネントに対して実行すると、既存のバイナリで、読み込みまたは実行の失敗など動作の破壊的変更が発生する場合があり、その場合は再コンパイルが必要になります。
ソース非互換 - 新しい SDK またはコンポーネントを使用して再コンパイルするとき、または新しいランタイムをターゲットにした場合、既存のソース コードでコンパイルを正常に行うためにソースの変更が必要になる場合があります。
動作の変更 - 実行時に既存のコードとバイナリの動作が異なる場合があります。 新しい動作が望ましくない場合は、既存のコードを更新して再コンパイルする必要があります。
ASP.NET Core
| タイトル | 変更の種類 |
|---|---|
| API コントローラー アクションが DI からパラメーターを推論しようとする | ソースに互換性がありません |
| ASPNET プレフィックス付き環境変数の優先順位 | 動作の変更 |
| リモート認証プロバイダーの AuthenticateAsync | ソースに互換性がありません |
| WebAssembly アプリでの認証 | バイナリ非互換 |
| 既定の認証方式 | バイナリ非互換 |
| 一部の Microsoft.AspNetCore.Mvc.Core ログ メッセージのイベント ID が変更されました | バイナリ非互換 |
| フォールバック ファイル エンドポイント | バイナリ非互換 |
| IHubClients と IHubCallerClients でメンバーが隠される | ソースに互換性がありません |
| Kestrel: 既定の HTTPS バインドが削除されました | バイナリ非互換 |
| Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv および libuv.dll を削除済み | バイナリ/ソースに互換性がありません |
| Microsoft.Data.SqlClient の 4.0.1 への更新 | ソースに互換性がありません |
| ミドルウェアが null 要求のデリゲートでエンドポイントに従わなくなった | バイナリ非互換 |
| モデル バインドでの空の本文に関する MVC の検出の変更 | バイナリ非互換 |
| 出力キャッシュ API の変更 | バイナリ/ソースに互換性がありません |
| SignalR Hub メソッドが DI からパラメーターを解決しようとする | ソースに互換性がありません |
Core .NET ライブラリ
| タイトル | 変更の種類 |
|---|---|
| 既定の診断 ID を持つ API の旧型式化 | ソースに互換性がありません |
| 既定以外の診断 ID を持つ API の旧型式化 | ソースに互換性がありません |
| アセンブリ名属性にアスタリスクが使用できなくなりました | 動作の変更 |
| BinaryFormatter シリアル化 API でコンパイラ エラーが発生する | ソースに互換性がありません |
| BrotliStream では、未定義の CompressionLevel 値が許可されなくなりました | バイナリ非互換 |
| Visual Studio の C++/CLI プロジェクト | ソースに互換性がありません |
| リフレクション呼び出し API 例外の変更 | バイナリ非互換 |
| 回収不可能な AssemblyLoadContext の回収可能アセンブリ | バイナリ非互換 |
| DateTime 加算メソッドの精度変更 | 動作の変更 |
| NaN に対する Equals メソッドの動作の変更 | バイナリ非互換 |
| EventSource コールバックの動作 | 動作の変更 |
| PatternContext<T> のジェネリック型制約 | バイナリ/ソースに互換性がありません |
| レガシ FileStream 戦略が削除されました | バイナリ非互換 |
| 古いフレームワークのライブラリ サポート | バイナリ/ソースに互換性がありません |
| 数値書式指定文字列の最大有効桁数 | バイナリ非互換 |
| 範囲が修正された正規表現パターン | 動作の変更 |
| SerializationFormat.Binary は廃止されました | バイナリ/ソースに互換性がありません |
| System.Drawing.Common 構成スイッチを削除 | 動作の変更 |
| System.Runtime.CompilerServices.Unsafe NuGet パッケージ | 動作の変更 |
| シンボリック リンクの時刻フィールド | バイナリ非互換 |
| リンクされたキャッシュ エントリの追跡 | バイナリ非互換 |
| BrotliStream の CompressionLevel を検証する | バイナリ非互換 |
構成
| タイトル | 変更の種類 |
|---|---|
| app.config の system.diagnostics エントリ | バイナリ非互換 |
暗号化
| タイトル | 変更の種類 |
|---|---|
| EnvelopedCms の暗号化解除で折り返し解除を二重処理しない | バイナリ非互換 |
| 動的 X509ChainPolicy 検証時間 | バイナリ非互換 |
| X500DistinguishedName によるフレンドリ名の解析 | バイナリ非互換 |
配置
| タイトル | 変更の種類 |
|---|---|
| すべてのアセンブリを既定でトリミング | ソースに互換性がありません |
| 複数レベルの検索の無効化 | バイナリ非互換 |
| 64 ビット Windows での x86 ホスト パス | 動作の変更 |
| TrimmerDefaultAction は非推奨です | ソースに互換性がありません |
Entity Framework Core
拡張機能
| タイトル | 変更の種類 |
|---|---|
| 構成をディクショナリにバインドすると値が拡張される | 動作の変更 |
| Windows Shell によって起動されたアプリの ContentRootPath | バイナリ非互換 |
| 環境変数のプレフィックス | バイナリ非互換 |
グローバリゼーション
| タイトル | 変更の種類 |
|---|---|
| グローバリゼーション API では Windows 上の ICU ライブラリが使用される | バイナリ非互換 |
相互運用機能
| タイトル | 変更の種類 |
|---|---|
| エミュレーション時の RuntimeInformation.OSArchitecture | バイナリ非互換 |
.NET MAUI
| タイトル | 変更の種類 |
|---|---|
| コンストラクターは、具象型ではなく基本インターフェイスを受け入れます | バイナリ非互換 |
| フロー方向ヘルパー メソッドが削除されました | バイナリ/ソースに互換性がありません |
| 新しい UpdateBackground パラメーター | バイナリ非互換 |
| ScrollToRequest プロパティの名前が変更されました | バイナリ/ソースに互換性がありません |
| 一部の Windows API の削除 | バイナリ/ソースに互換性がありません |
ネットワーク
| タイトル | 変更の種類 |
|---|---|
| AllowRenegotiation の既定値が false になる | バイナリ/ソースに互換性がありません |
| Linux でのカスタム ping ペイロード | バイナリ非互換 |
| Socket.End メソッドが ObjectDisposedException をスローしない | バイナリ非互換 |
SDK と MSBuild
| タイトル | 変更の種類 |
|---|---|
| 発行専用の自動 RuntimeIdentifier | バイナリ/ソースに互換性がありません |
| CLI コンソール出力での UTF-8 の使用 | バイナリ/ソースに互換性がありません |
| 完了後にコンソール エンコードが UTF-8 ではなくなる | バイナリ非互換 |
| MSBuild の .NET 7 でのカスタム型のシリアル化 | バイナリ/ソースに互換性がありません |
| SDK のサイド バイ サイド インストール | バイナリ/ソースに互換性がありません |
| ルート フォルダー内のツール マニフェスト | 動作の変更 |
| .NET 7 SDK のバージョン要件 | 動作の変更 |
-a の代わりに --arch をエイリアス --test-adapter-path に切り替える |
バイナリ/ソースに互換性がありません |
-r の代わりに --runtime をエイリアス --results-dir に切り替える |
バイナリ/ソースに互換性がありません |
--output オプションはソリューションレベルのコマンド に対して無効になりました |
バイナリ/ソースに互換性がありません |
| SDK は ResolvePackageDependencies を呼び出さなくなりました | ソースに互換性がありません |
シリアル化
| タイトル | 変更の種類 |
|---|---|
| DataContractSerializer が -0 を逆シリアル化する際に符号を保持する | バイナリ非互換 |
| 先頭または末尾に空白文字を含む Version 型の逆シリアル化 | バイナリ非互換 |
| JsonSerializerOptions コピー コンストラクターに JsonSerializerContext が含まれる | バイナリ非互換 |
| オブジェクト型のポリモーフィックなシリアル化 | バイナリ非互換 |
| System.Text.Json ソース ジェネレーターのフォールバック | バイナリ非互換 |
Windows フォーム
| タイトル | 変更の種類 |
|---|---|
| 旧形式と警告 | ソースに互換性がありません |
| 一部の API によって ArgumentNullException がスローされる | バイナリ非互換 |
WPF
| タイトル | 変更の種類 |
|---|---|
| テキスト エディターでのドラッグ アンド ドロップ操作の動作を復元しました | 動作の変更 |
XML と XSLT
| タイトル | 変更の種類 |
|---|---|
| XmlSecureResolver は廃止されました | バイナリ/ソースに互換性がありません |
関連項目
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET