BinaryFormatter がほとんどのプロジェクトの種類で無効になりました

BinaryFormatter.Serialize(Stream, Object) メソッドと BinaryFormatter.Deserialize(Stream) メソッドは、コンソール アプリケーションを含む、ほぼすべてのプロジェクトの種類で、実行時に NotSupportedException をスローするようになりました。

以前の動作

.NET 7 では、BinaryFormatter.Serialize(Stream, Object) メソッドと BinaryFormatter.Deserialize(Stream) メソッドが古いものとしてマークされ、コンパイル時にエラーが発生していました。 ただし、アプリケーションによって廃止が抑制されていた場合は、引き続きメソッドを呼び出すことができ、ほとんどのプロジェクトの種類 (ASP.NET、WASM、MAUI を除く) で適切に機能していました。 たとえば、API はコンソール アプリでは正しく機能していました。

新しい動作

.NET 8 以降では、影響を受けるメソッドは、Windows フォームと WPF を除くすべてのプロジェクトの種類で、実行時に NotSupportedException をスローします。 API は、Windows フォームや WPF を含むすべてのプロジェクトの種類では、古いままになっています (エラーとして残っています)。

導入されたバージョン

.NET 8 Preview 4

破壊的変更の種類

この変更は、動作変更です。

変更理由

この実行時の変更は、BinaryFormatter の廃止計画の次の段階です。ここでは、最終的に BinaryFormatter が .NET から削除されます。

最善策は、セキュリティと信頼性に欠陥があるため BinaryFormatter から移行することです。 詳細については、「推奨される代替手段」を参照してください。

BinaryFormatter を引き続き使用する必要がある場合、プロジェクト ファイルに互換性スイッチを設定して、BinaryFormatter 機能を再度有効にすることができます。 詳細については、.NET 7 の破壊的変更通知の「推奨されるアクション」セクションを参照してください。 その互換性スイッチは、.NET 8 で引き続き受け入れられます。

影響を受ける API

こちらもご覧ください