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


BinaryFormatter отключен для большинства типов проектов

BinaryFormatter.Serialize(Stream, Object) и BinaryFormatter.Deserialize(Stream) методы теперь выдают 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)

Тип разрушающего изменения

Это изменение поведения.

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

Это изменение среды выполнения является следующим этапом плана устаревания BinaryFormatter, в котором BinaryFormatter в конечном итоге будет удалён из .NET.

Наилучший способ — перейти от BinaryFormatter из-за недостатков в безопасности и надежности. Дополнительные сведения см. в разделе "Предпочтительная альтернатива".

Если вам нужно продолжить использование BinaryFormatter, можно настроить переключатель совместимости в файле проекта, чтобы повторно включить BinaryFormatter функциональные возможности. Дополнительные сведения см. в разделе "Рекомендуемые действия " уведомления о критических изменениях .NET 7. Этот переключатель совместимости по-прежнему поддерживается в .NET 8.

Затронутые API

См. также