SYSLIB0011: сериализация BinaryFormatter устарела

Из-за уязвимостей системы безопасности в BinaryFormatterследующих API были помечены как устаревшие в .NET 5. Использование их в коде создает предупреждение или ошибку SYSLIB0011 во время компиляции.

Начиная с .NET 8 BinaryFormatter.Serialize и BinaryFormatter.Deserialize вызывайте NotSupportedException во время выполнения в большинстве типов проектов. Кроме того, PreserializedResourceWriter.AddBinaryFormattedResource(String, Byte[], String) устарело как предупреждение, а следующие API устарели как ошибки:

Методы обхода проблемы

Если вы используете 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>

Дополнительные сведения см. в разделе Отключение предупреждений.

См. также