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