SerializationFormat.Binary 已过时

DataTableDataSetSerializationFormat.Binary 已过时。 二进制序列化依赖于 BinaryFormatter,这是不安全的。 如果在代码中使用 SerializationFormat.Binary,则编译时将生成过时警告 SYSLIB0038

此外,在以下情况下将在运行时引发 InvalidEnumArgumentException

旧行为

以前,DataTableDataSet 可以序列化和反序列化(RemotingFormat 属性设置为 SerializationFormat.Binary,在后台使用 BinaryFormatter)。

新行为

从 .NET 7 开始,如果尝试序列化或反序列化 DataTableDataSetRemotingFormat 属性设置为 SerializationFormat.Binary),则会引发 InvalidEnumArgumentException

引入的版本

.NET 7

中断性变更的类型

此更改会影响源兼容性二进制兼容性

更改原因

SerializationFormat.Binary 通过 BinaryFormatter 实现,这是不安全的,并已在整个 .NET 堆栈中过时。

如果代码使用 SerializationFormat.Binary,请切换到使用 SerializationFormat.Xml,或者使用另一种序列化方法。

否则,可以设置 Switch.System.Data.AllowUnsafeSerializationFormatBinaryAppContext 开关。 通过此开关可以选择允许使用 SerializationFormat.Binary,以便代码可以像以前一样工作。 但是,此开关将在 .NET 8 中删除。 有关设置开关的信息,请参阅适用于库使用者的 AppContext

受影响的 API

另请参阅