Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
SerializationFormat.Binary устарел для DataTable и DataSet. Двоичная сериализация зависит от BinaryFormatterнебезопасной. При использовании SerializationFormat.Binary в коде предупреждение об удалении SYSLIB0038 будет создано во время компиляции.
Кроме того, во время выполнения создается исключение InvalidEnumArgumentException:
- Установка DataSet.RemotingFormat или DataTable.RemotingFormat значение SerializationFormat.Binary.
- Вызовите один из конструкторов десериализации для DataTableDataSet или с двоичными данными.
Прежнее поведение
DataTable Ранее и DataSet можно сериализовать и десериализировать с заданным свойствомRemotingFormatSerializationFormat.Binary, который используется BinaryFormatter под капотом.
Новое поведение
Начиная с .NET 7, если вы пытаетесь сериализовать или десериализовать DataTable и с заданным свойством DataSetRemotingFormatвызывается SerializationFormat.BinaryInvalidEnumArgumentException.
Представленные версии
.NET 7
Тип критического изменения
Это изменение может повлиять на совместимость исходного кода и совместимость на уровне двоичного кода.
Причина изменения
SerializationFormat.Binary реализуется через BinaryFormatterнебезопасный и устаревший стек .NET.
Рекомендуемое действие
Если используется SerializationFormat.Binaryкод, переключитесь на использование SerializationFormat.Xml или используйте другой метод сериализации.
В противном случае можно задать переключатель Switch.System.Data.AllowUnsafeSerializationFormatBinaryAppContext . Этот параметр позволяет разрешить использование SerializationFormat.Binaryкода таким образом, чтобы код работал как раньше. Однако этот параметр будет удален в .NET 8. Сведения о настройке переключателя см. в разделе AppContext для потребителей библиотеки.
Затронутые API
- System.Data.SerializationFormat.Binary
- DataSet.RemotingFormat
- DataTable.RemotingFormat
- DataSet(SerializationInfo, StreamingContext)
- DataSet(SerializationInfo, StreamingContext, Boolean)
- DataTable(SerializationInfo, StreamingContext)