SerializationFormat.Binary устарел
SerializationFormat.Binary устарел для DataTable и DataSet. Двоичная сериализация зависит от BinaryFormatterнебезопасной. При использовании SerializationFormat.Binary в коде предупреждение об удалении SYSLIB0038 будет создано во время компиляции.
Кроме того, InvalidEnumArgumentException при выполнении создается исключение:
- Установка DataSet.RemotingFormat или DataTable.RemotingFormat значение SerializationFormat.Binary.
- Вызовите один из конструкторов десериализации для DataTable DataSet или с двоичными данными.
Прежнее поведение
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
- System.Data.SerializationFormat.Binary
- DataSet.RemotingFormat
- DataTable.RemotingFormat
- DataSet(SerializationInfo, StreamingContext)
- DataSet(SerializationInfo, StreamingContext, Boolean)
- DataTable(SerializationInfo, StreamingContext)