已在大多数项目类型中禁用 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 预览版 4

中断性变更的类型

此更改为行为更改

更改原因

此运行时更改是 BinaryFormatter 过时计划的下一阶段,在该计划中,最终会将 BinaryFormatter 从 .NET 中移除。

由于 BinaryFormatter 的安全性和可靠性缺陷,最好的做法是从其迁移。 有关详细信息,请参阅首选替代方案

如果需要继续使用 BinaryFormatter,可以在项目文件中设置兼容性开关以重新启用 BinaryFormatter 功能。 有关详细信息,请参阅 .NET 7 中断性变更通知的建议的操作部分。 该兼容性开关在 .NET 8 中继续使用。

受影响的 API

另请参阅