BinaryFormatter отключен для большинства типов проектов
BinaryFormatter.Deserialize(Stream) Теперь BinaryFormatter.Serialize(Stream, Object) методы вызывают NotSupportedException во время выполнения практически все типы проектов, включая консольные приложения.
Прежнее поведение
В .NET 7 BinaryFormatter.Serialize(Stream, Object)BinaryFormatter.Deserialize(Stream) методы помечены как устаревшие и вызвали ошибку во время компиляции. Тем не менее, если приложение подавляло обнажение, оно по-прежнему может вызывать методы, и они работают правильно в большинстве типов проектов (за исключением ASP.NET, WASM и MAUI). Например, API-интерфейсы работают правильно в консольном приложении.
Новое поведение
Начиная с .NET 8 затронутые методы создаются NotSupportedException во время выполнения во всех типах проектов, кроме Windows Forms и WPF. API-интерфейсы продолжают оставаться устаревшими (как ошибка) во всех типах проектов, включая Windows Forms и WPF.
Представленные версии
.NET 8( предварительная версия 4)
Тип критического изменения
Причина изменения
Это изменение во время выполнения является следующим этапом плана obsoletion BinaryFormatter, в котором BinaryFormatter в конечном итоге будет удалено из .NET.
Рекомендуемое действие
Лучший курс действий заключается в том, чтобы перейти от из-за BinaryFormatter
его безопасности и надежности недостатков. Дополнительные сведения см. в разделе "Предпочтительная альтернатива".
Если вам нужно продолжить использование BinaryFormatter
, можно настроить переключатель совместимости в файле проекта, чтобы повторно включить BinaryFormatter
функциональные возможности. Дополнительные сведения см. в разделе "Рекомендуемые действия " уведомления о критических изменениях .NET 7. Этот коммутатор совместимости по-прежнему учитывается в .NET 8.
Затронутые API
- System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream, Object)
- System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream)