.NET 10 での破壊的変更

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

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

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

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

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

注

この記事は作業中です。 これは、.NET 10 の破壊的変更の完全なリストではありません。

ASP.NET Core

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

Containers

Title 変更の種類
既定の.NET イメージは Ubuntu を使用します 動作の変更
dotnet テストには、コンテナー内の書き込み可能な VSTest 成果物の基本ディレクトリが必要です 動作の変更

Core .NET ライブラリ

Title 変更の種類
API の廃止 ソースに互換性がありません
ActivitySource.CreateActivity と ActivitySource.StartActivity の動作の変更 動作の変更
Arm64 SVE のフォールトしないロードにはマスクが必要 バイナリ/ソースに互換性がありません
BufferedStream.WriteByte が暗黙的フラッシュを実行しなくなりました 動作の変更
スパン パラメーターを使用した C# 14 オーバーロードの解決 動作の変更
汎用的な数学における一貫したシフトの挙動 動作の変更
既定のトレース コンテキスト伝達子が W3C 標準に更新 動作の変更
DriveInfo.DriveFormat は Linux ファイルシステムの種類を返します 動作の変更
DefaultValueAttribute ctor から削除された DynamicallyAccessedMembers 注釈 バイナリ/ソースに互換性がありません
InlineArray で許可されていない明示的な構造体サイズ バイナリ非互換
FilePatternMatch.Stem が null 非許容に変更されました ソースの非互換または挙動の変更
GnuTarEntry と PaxTarEntry には既定では atime と ctime が含まれなくなりました 動作の変更
LDAP DirectoryControl の解析がより厳格になりました 動作の変更
MacCatalyst バージョンの正規化 動作の変更
Unix では、名前付きミューテックスは既定でユーザー スコープに設定されます 動作の変更
.NET ランタイムでは既定の終了シグナル ハンドラーが提供されなくなりました 動作の変更
コア ライブラリに含まれる System.Linq.AsyncEnumerable ソースに互換性がありません
Type.MakeGenericSignatureType 引数の検証 動作の変更

暗号

Title 変更の種類
CompositeMLDsa が draft-08 に更新されました 動作の変更
CoseSigner.Key は null でもかまいません 動作/ソースの互換性のない変更
MLDsa および SlhDsa 'SecretKey' メンバーの名前が変更されました ソースに互換性がありません
OpenSSL 暗号プリミティブは macOS ではサポートされていません 動作の変更
Unix では OpenSSL 1.1.1 以降が必要 動作の変更
X500DistinguishedName の検証がより厳密である 動作の変更
X509Certificate および PublicKey のキー パラメーターは null にできます 動作/ソースの互換性のない変更
環境変数の名前が DOTNET_OPENSSL_VERSION_OVERRIDE に変更されました 動作の変更

Entity Framework Core

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

Extensions

Title 変更の種類
BackgroundService は、すべての ExecuteAsync をタスクとして実行します 動作の変更
AnyKey を使用した GetKeyedService() と GetKeyedServices() の問題を修正する 動作の変更
構成内で null 値を保持 動作の変更
コンソールログ出力でメッセージが重複しなくなりました 動作の変更
ProviderAliasAttribute が Microsoft.Extensions.Logging.Abstractions アセンブリに移動しました ソースに互換性がありません
trim-unsafe な Microsoft.Extensions.Configuration コードから DynamicallyAccessedMembers 注釈を削除しました バイナリ非互換

Globalization

Title 変更の種類
環境変数の名前が DOTNET_ICU_VERSION_OVERRIDE に変更されました 動作の変更

ツールをインストールする

Title 変更の種類
VS Code 用の dotnet.acquire API で、常に最新がダウンロードされるわけではなくなりました 動作の変更

Interop

Title 変更の種類
IDispatchEx COM オブジェクトを IReflect にキャストできない 動作の変更
単一ファイル アプリで実行可能ディレクトリ内のネイティブ ライブラリが検索されなくなりました 動作の変更
DllImportSearchPath.AssemblyDirectory を指定すると、アセンブリ ディレクトリのみが検索されます 動作の変更

ネットワーク

Title 変更の種類
PublishTrimmed で HTTP/3 のサポートが既定で無効になっている ソースに互換性がありません
MailAddress では、連続するドットの検証を強制します 動作の変更
ブラウザーの HTTP クライアントでは、ストリーミング HTTP 応答が既定で有効 動作の変更
Uri 長さの制限が撤廃されました 動作の変更

リフレクション

Title 変更の種類 導入されたバージョン
InvokeMember/FindMembers/DeclaredMembers のより制限された注釈 動作/ソースに互換性がありません
Type.MakeGenericSignatureType 引数の検証 動作の変更

SDK と MSBuild

Title 変更の種類
.NET CLI --interactiveは、ユーザー シナリオではtrueが既定になります 動作の変更
dotnet CLI コマンドは、コマンドに関連しないデータを stderr に記録します 動作の変更
.NET ツールのパッケージ化では RuntimeIdentifier 固有のツール パッケージを作成する 動作の変更
'loose manifests' から 'workload sets' モードに既定のワークロード構成を設定する 動作の変更
DefineConstants 評価時に使用できないターゲット フレームワーク向け 動作の変更
コード カバレッジ EnableDynamicNativeInstrumentation の既定値は false です 動作の変更
dnx スクリプトは global.json の SDK 選択をバイパスする 動作の変更
dnx.ps1 ファイルが .NET SDK に含まれない ソースに互換性がありません
ファイル レベルのディレクティブの二重引用符は許可されません ソースに互換性がありません
dotnet new sln 既定値は SLNX ファイル形式 動作の変更
dotnet package list 復元を実行します 動作の変更
dotnet restore 推移依存パッケージを監査する 動作の変更
dotnet tool install --local 既定でマニフェストを作成する 動作の変更
dotnet watch stdout ではなく stderr にログを記録する 動作の変更
dotnet restore では project.json はサポートされていません ソースに互換性がありません
SHA-1 フィンガープリントのサポートは非推奨になりました dotnet nuget sign 動作の変更
MSBUILDCUSTOMBUILDEVENTWARNING エスケープ ハッチが削除されました 動作の変更
MSBuild カスタム カルチャ リソースの処理 動作の変更
NuGet によって排除された直接参照に対して NU1510 が発生する ソースに互換性がありません
ランタイム アセットのない NuGet パッケージは、deps.jsonに含まれません ソースに互換性がありません
バージョンのない PackageReference でエラーが発生する 動作の変更
PrunePackageReference が直接排除可能な参照をプライベート化する 動作の変更
dotnet package list および dotnet package search において HTTP 警告がエラーに変更されました 動作/ソースの互換性のない変更
NUGET_ENABLE_ENHANCED_HTTP_RETRY環境変数が削除されました 動作の変更
NuGet 監査ソースでは、既定で安全でない HTTP が許可されなくなりました 動作の変更
NuGet では、無効なパッケージ ID に対してエラーがログに記録されます 動作の変更
ToolCommandName ツール以外のパッケージに対して設定されていない ソースに互換性がありません
テンプレート パッケージのインストールによって NuGet 署名が検証される 動作の変更

シリアル化

Title 変更の種類
System.Text.Json はプロパティ名の競合をチェックします 動作の変更
XmlSerializer が ObsoleteAttribute でマークされたプロパティを無視しなくなりました 動作の変更

Windows フォーム

Title 変更の種類
API の廃止 ソースに互換性がありません
WPFと WinForms の両方を参照するアプリケーションは、MenuItem 型と ContextMenu 型のあいまいさを解消する必要があります ソースに互換性がありません
HtmlElement.InsertAdjacentElement の名前が変更されたパラメーター ソースに互換性がありません
TreeView チェックボックス画像の切り詰め 動作の変更
StatusStrip では既定で System RenderMode が使用されます 動作の変更
System.Drawing OutOfMemoryException が ExternalException に変更されました 動作の変更

Windows Presentation Foundation (WPF)

Title 変更の種類
空の ColumnDefinitions と RowDefinitions は許可されていません ソースに互換性がありません
DynamicResource を誤って使用すると、アプリケーションがクラッシュする ソースの非互換または挙動の変更