суббота, 28 октября 2023 г.

BinaryFormatter, Obsolete

BinaryFormatter is Obsolete

Severity Code Description Project File Line Suppression State

Error SYSLIB0011 'BinaryFormatter.Deserialize(Stream)' is obsolete: 'BinaryFormatter serialization is obsolete and should not be used. See https://aka.ms/binaryformatter for more information.'

https://learn.microsoft.com/ru-ru/dotnet/core/compatibility/serialization/5.0/binaryformatter-serialization-obsolete

Use Xml or Json Serialization

  • Не используйте в коде BinaryFormatter. Рассмотрите возможность использования JsonSerializer или XmlSerializer вместо них. Дополнительные сведения см. в статье Руководство по безопасности BinaryFormatter.

  • Можно временно отключить появляющееся во время компиляции предупреждение об использовании BinaryFormatter (SYSLIB0011). Перед этим мы рекомендуем тщательно оценить риски для кода. Самый простой способ отключить предупреждения — обособить отдельные места вызова директивами #pragma.

    C#
    // Now read the purchase order back from disk
    using (var readStream = new FileStream("myfile.bin", FileMode.Open))
    {
        var formatter = new BinaryFormatter();
    #pragma warning disable SYSLIB0011
        return (PurchaseOrder)formatter.Deserialize(readStream);
    #pragma warning restore SYSLIB0011
    }
    

    Предупреждение можно также отключить в файле проекта.

    XML
    <PropertyGroup>
      <OutputType>Exe</OutputType>
      <TargetFramework>net5.0</TargetFramework>
      <!-- Disable "BinaryFormatter is obsolete" warnings for entire project -->
      <NoWarn>$(NoWarn);SYSLIB0011</NoWarn>
    </PropertyGroup>
    

    В этом случае предупреждение будет отключено во всех файлах с кодом в проекте. Подавление SYSLIB0011 не приводит к отключению предупреждений, вызванных использованием других устаревших API.

  • Чтобы продолжить использование BinaryFormatter в приложениях ASP.NET, можно повторно включить их в файле проекта. Но делать это настоятельно не рекомендуется. Дополнительные сведения см. в статье Руководство по безопасности BinaryFormatter.

    XML
    <PropertyGroup>
      <TargetFramework>net5.0</TargetFramework>
      <!-- Warning: Setting the following switch is *NOT* recommended in web apps. -->
      <EnableUnsafeBinaryFormatterSerialization>true</EnableUnsafeBinaryFormatterSerialization>
    </PropertyGroup>

Комментариев нет:

Отправить комментарий