Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
BinaryFormatter удаление
Начиная с .NET 9, BinaryFormatter больше не поддерживается из-за известных , включая PlatformNotSupportedException приложения. Дополнительные сведения о рисках BinaryFormatter и причине его удаления см. в руководстве BinaryFormatter по миграции.
При BinaryFormatterудалении ожидается, что многие WPF приложения будут затронуты, и вам потребуется принять меры для завершения миграции в .NET 9 или более поздней версии.
Как BinaryFormatter влияет WPF
До .NET 9 Windows Presentation Foundation (WPF) используется BinaryFormatter для сериализации и десериализации данных для таких сценариев буфера обмена, перетаскивания и загрузки и хранения состояния в журнале. Начиная с .NET 9 и WPF Windows Forms используют подмножество BinaryFormatter реализации внутри этих сценариев. Хотя BinaryFormatterриски не могут быть устранены в сериализации и десериализации общего назначения, были приняты меры по устранению рисков в этих очень конкретных случаях использования с известным набором типов. Резервная BinaryFormatter копия по-прежнему находится на месте для неизвестных или неподдерживаемых типов, что приведет к возникновению PlatformNotSupportedException ошибки, если в приложении не выполняются шаги по миграции.
WPF и приложения WinForms обрабатывают следующие типы, а также массивы и списки этих типов. Буфер обмена, перетаскивание и привязка Avalon в журнале будут продолжать работать с этими типами без каких-либо шагов миграции.
boolbytechardecimaldoubleintsbytefloat- TimeSpan
- DateTime
uintstringnintnuintlongulongshortushort- PointF
- RectangleF
Сценарии OLE
Сведения об удалении эффектов BinaryFormatter имеются в таких сценариях OLE, как буфер обмена и перетаскивание, а также рекомендации по миграции в Windows Forms и Windows Presentation Foundation BinaryFormatter OLE.
Вы можете ссылаться на функцию, в которой мы использовали BinaryFormatter в качестве резервного варианта для чтения и сохранения объекта для обработки: SaveObjectToHandle и ReadObjectFromHandle для сценариев OLE
Ведение журнала
В случае, если необходимо сохранить или загрузить состояние при управлении журналом навигации в WPF.
Чтобы загрузить и сохранить, мы вызываем LoadSubStreams/ SaveSubStreamsDataStream класса. Если элемент, используемый не в части типа know, обрабатываемого новой реализацией, будет использоваться BinaryFormatter.
Когда разработчик переходит через JournalEntry с помощью Navigateили GoForwardGoBack, данные узла загружаются или сохраняются в потоке для сохранения состояния. Если используемый тип не обрабатывается внутренне во время сериализации или десериализации, BinaryFormatter используется.
Ссылка: DataStream.cs
Обходное решение совместимости (не рекомендуется)
Пользователи .NET 9, которые не могут перейти от BinaryFormatter него, могут установить неподдерживаемый пакет совместимости. Дополнительные сведения см BinaryFormatter . в руководстве по миграции: пакет совместимости.
Внимание
BinaryFormatter является опасным и не рекомендуется, так как он ставит использование приложений под угрозу для атак, таких как отказ в обслуживании (DoS), раскрытие информации или удаленное выполнение кода. Дополнительные сведения о рисках см. в разделе о рисках BinaryFormatter десериализации в использовании BinaryFormatter и связанных типах.
Проблемы
Если вы испытываете непредвиденное поведение с приложением WPF относительно BinaryFormatter, отправьте проблему по адресу dotnet/wpf/issues и укажите, что проблема связана с удалением BinaryFormatter.