SYSLIB0011: BinaryFormatter-serialiseringen är föråldrad
På grund av säkerhetsrisker i BinaryFormatterhar följande API:er markerats som föråldrade i .NET 5. Om du använder dem i kod genereras varning eller fel SYSLIB0011
vid kompileringstillfället.
- System.Exception.SerializeObjectState
- BinaryFormatter.Serialize
- BinaryFormatter.Deserialize
- Formatter.Serialize(Stream, Object)
- Formatter.Deserialize(Stream)
- IFormatter.Serialize(Stream, Object)
- IFormatter.Deserialize(Stream)
Startar i .NET 8 BinaryFormatter.Serialize och BinaryFormatter.Deserialize genererar en NotSupportedException vid körning på de flesta projekttyper. Dessutom PreserializedResourceWriter.AddBinaryFormattedResource(String, Byte[], String) är föråldrad som varning och följande API:er är föråldrade som fel:
- System.Runtime.Serialization.Formatter
- System.Runtime.Serialization.IFormatter
- System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
Provisoriska lösningar
Om du använder BinaryFormatterbör du migrera bort från den på grund av dess säkerhets- och tillförlitlighetsfel. Mer information finns i Deserialization risks in use of BinaryFormatter and related types and Preferred alternatives (Deserialiseringsrisker vid användning av BinaryFormatter och relaterade typer och föredragna alternativ).
Ignorera en varning
Om du måste använda föråldrade API:er kan du ignorera varningen/felet i koden eller i projektfilen.
Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och återaktiverar sedan varningen.
// Disable the warning.
#pragma warning disable SYSLIB0011
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0011
Om du vill ignorera alla SYSLIB0011
varningar i projektet lägger du till en <NoWarn>
egenskap i projektfilen.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0011</NoWarn>
</PropertyGroup>
</Project>
Mer information finns i Utelämna varningar.