Dela via


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.

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:

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.

Se även