SYSLIB0011: A serialização do BinaryFormatter é obsoleta
Devido a vulnerabilidades de segurança no BinaryFormatter, as seguintes APIs foram marcadas como obsoletas no .NET 5. Usar esses tipos no código gerará um aviso ou erro SYSLIB0011
em tempo de compilação.
- System.Exception.SerializeObjectState
- BinaryFormatter.Serialize
- BinaryFormatter.Deserialize
- Formatter.Serialize(Stream, Object)
- Formatter.Deserialize(Stream)
- IFormatter.Serialize(Stream, Object)
- IFormatter.Deserialize(Stream)
Começando no .NET 8, BinaryFormatter.Serialize e BinaryFormatter.Deserialize geram um NotSupportedException em tempo de execução na maioria dos tipos de projeto. Além disso, PreserializedResourceWriter.AddBinaryFormattedResource(String, Byte[], String) é obsoleto por aviso e as seguintes APIs foram marcadas como obsoletas por erro:
- System.Runtime.Serialization.Formatter
- System.Runtime.Serialization.IFormatter
- System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
Soluções Alternativas
Se você estiver usando BinaryFormatter, deverá migrar dele devido a suas falhas de segurança e confiabilidade. Para saber mais, confira Riscos de desserialização no uso do BinaryFormatter e tipos relacionados e Alternativas preferenciais.
Suprimir um aviso
Se for necessário usar as APIs obsoletas, você poderá suprimir o aviso/erro no código ou no arquivo de projeto.
Para suprimir apenas uma violação única, adicione as diretivas de pré-processador ao arquivo de origem para desabilitar e, em seguida, reabilite o aviso.
// Disable the warning.
#pragma warning disable SYSLIB0011
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0011
Para suprimir todos os avisos SYSLIB0011
no projeto, adicione uma propriedade <NoWarn>
ao arquivo de projeto.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0011</NoWarn>
</PropertyGroup>
</Project>
Para obter mais informações, confira Suprimir avisos.
Confira também
- Resolver erros de desabilitação e obsolescência do BinaryFormatter.
- Os métodos de serialização BinaryFormatter ficaram obsoletos e foram proibidos nos aplicativos ASP.NET (.NET 5)
- APIs de serialização BinaryFormatter produzem erros de compilador (.NET 7)
- BinaryFormatter foi desabilitado na maioria dos tipos de projeto (.NET 8)