次の方法で共有


ほとんどのプロジェクトの種類で 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

こちらも参照ください