Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
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
- System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream, Object)
- System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream)