Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Из-за уязвимостей системы безопасности в BinaryFormatterследующих API были помечены как устаревшие в .NET 5. Использование их в коде создает предупреждение или ошибку SYSLIB0011 во время компиляции.
- System.Exception.SerializeObjectState
- BinaryFormatter.Serialize
- BinaryFormatter.Deserialize
- Formatter.Serialize(Stream, Object)
- Formatter.Deserialize(Stream)
- IFormatter.Serialize(Stream, Object)
- IFormatter.Deserialize(Stream)
Начиная с версии .NET 8, BinaryFormatter.Serialize и BinaryFormatter.Deserialize вызывают NotSupportedException во время выполнения в большинстве типов проектов. Кроме того, PreserializedResourceWriter.AddBinaryFormattedResource(String, Byte[], String) устарела в качестве предупреждения, а следующие API устарели в качестве ошибки:
- System.Runtime.Serialization.Formatter
- System.Runtime.Serialization.IFormatter
- System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
Обходные пути
Если вы используете BinaryFormatter, вы должны перейти от него из-за его недостатков безопасности и надежности. Дополнительные сведения см. в разделе о рисках, связанных с десериализацией при использовании BinaryFormatter и связанных типов и предпочтительных альтернатив.
Отключение предупреждений
Если необходимо использовать устаревшие API, можно отключить предупреждение или ошибку в коде или в файле проекта.
Чтобы отключить только одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить предупреждение.
// Disable the warning.
#pragma warning disable SYSLIB0011
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0011
Чтобы отключить все предупреждения SYSLIB0011 в проекте, добавьте свойство <NoWarn> в файл проекта.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0011</NoWarn>
</PropertyGroup>
</Project>
Дополнительные сведения см. в разделе Подавление предупреждений.