SYSLIB0011: Serialisatie van BinaryFormatter is verouderd
Vanwege beveiligingsproblemen in BinaryFormatterzijn de volgende API's gemarkeerd als verouderd in .NET 5. Als u ze in code gebruikt, wordt er een waarschuwing of fout SYSLIB0011
gegenereerd tijdens het compileren.
- System.Exception.SerializeObjectState
- BinaryFormatter.Serialize
- BinaryFormatter.Deserialize
- Formatter.Serialize(Stream, Object)
- Formatter.Deserialize(Stream)
- IFormatter.Serialize(Stream, Object)
- IFormatter.Deserialize(Stream)
Begin in .NET 8 BinaryFormatter.Serialize en BinaryFormatter.Deserialize gooi een NotSupportedException runtime op de meeste projecttypen. Bovendien PreserializedResourceWriter.AddBinaryFormattedResource(String, Byte[], String) is deze verouderd als waarschuwing en zijn de volgende API's verouderd als fout:
- System.Runtime.Serialization.Formatter
- System.Runtime.Serialization.IFormatter
- System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
Tijdelijke oplossingen
Als u deze gebruikt BinaryFormatter, moet u deze verwijderen vanwege de beveiligings- en betrouwbaarheidsfouten. Zie Deserialization-risico's voor het gebruik van BinaryFormatter en gerelateerde typen en voorkeursalternatieven voor meer informatie.
Een waarschuwing onderdrukken
Als u de verouderde API's moet gebruiken, kunt u de waarschuwing/fout in code of in het projectbestand onderdrukken.
Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de waarschuwing uit te schakelen en vervolgens opnieuw in te schakelen.
// Disable the warning.
#pragma warning disable SYSLIB0011
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0011
Als u alle SYSLIB0011
waarschuwingen in uw project wilt onderdrukken, voegt u een <NoWarn>
eigenschap toe aan het projectbestand.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0011</NoWarn>
</PropertyGroup>
</Project>
Zie Waarschuwingen onderdrukken voor meer informatie.