Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
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)
Med början i .NET 8 kastar BinaryFormatter.Serialize och BinaryFormatter.Deserialize en NotSupportedException vid körning på de flesta projekttyper. Dessutom är PreserializedResourceWriter.AddBinaryFormattedResource(String, Byte[], String) föråldrad som en varning och följande API:er är föråldrade som ett fel:
- System.Runtime.Serialization.Formatter
- System.Runtime.Serialization.IFormatter
- System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
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 Deserialiseringsrisker vid användning av BinaryFormatter och relaterade typer och föredragna alternativ.
Undertryck 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>
För mer information, se Undertrycka varningar.