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 Forms 和 WPF)拋出 a NotSupportedException 。 這些 API 在所有專案類型中(包括 Windows Forms 和 WPF)依然因錯誤而過時。
推出的版本
.NET 8 預覽版 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)