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
- System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream, Object)
- System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream)
こちらもご覧ください
.NET