Поделиться через


SerializationFormat.Binary устарел

SerializationFormat.Binary устарел для DataTable и DataSet. Двоичная сериализация зависит от BinaryFormatterнебезопасной. При использовании SerializationFormat.Binary в коде предупреждение об удалении SYSLIB0038 будет создано во время компиляции.

Кроме того, InvalidEnumArgumentException при выполнении создается исключение:

Прежнее поведение

DataTable Ранее и DataSet можно сериализовать и десериализировать с заданным свойствомSerializationFormat.BinaryRemotingFormat, который используется BinaryFormatter под капотом.

Новое поведение

Начиная с .NET 7, если вы пытаетесь сериализовать или десериализовать DataTable и с заданным свойством RemotingFormat SerializationFormat.Binaryвызывается InvalidEnumArgumentException DataSet.

Представленные версии

.NET 7

Тип критического изменения

Это изменение может повлиять на совместимость исходного кода и совместимость на уровне двоичного кода.

Причина изменения

SerializationFormat.Binary реализуется через BinaryFormatterнебезопасный и устаревший стек .NET.

Если используется SerializationFormat.Binaryкод, переключитесь на использование SerializationFormat.Xml или используйте другой метод сериализации.

В противном случае можно задать переключатель Switch.System.Data.AllowUnsafeSerializationFormatBinary AppContext . Этот параметр позволяет разрешить использование SerializationFormat.Binaryкода таким образом, чтобы код работал как раньше. Однако этот параметр будет удален в .NET 8. Сведения о настройке переключателя см. в разделе AppContext для потребителей библиотеки.

Затронутые API

См. также