SYSLIB0011: BinaryFormatter-Serialisierung ist veraltet
Aufgrund der Sicherheitsrisiken in BinaryFormatter wurden die folgenden APIs ab .NET 5 als veraltet gekennzeichnet. Ihre Verwendung im Code führt zur Kompilierzeit zur Warnung SYSLIB0011
.
- System.Exception.SerializeObjectState
- BinaryFormatter.Serialize
- BinaryFormatter.Deserialize
- Formatter.Serialize(Stream, Object)
- Formatter.Deserialize(Stream)
- IFormatter.Serialize(Stream, Object)
- IFormatter.Deserialize(Stream)
Ab .NET 8 lösen BinaryFormatter.Serialize und BinaryFormatter.Deserialize zur Laufzeit für die meisten Projekttypen eine NotSupportedException aus. Darüber hinaus ist PreserializedResourceWriter.AddBinaryFormattedResource(String, Byte[], String) veraltet als Warnung, und die folgenden APIs sind veraltet als Fehler:
- System.Runtime.Serialization.Formatter
- System.Runtime.Serialization.IFormatter
- System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
Problemumgehung
Wenn Sie BinaryFormatter verwenden, sollten Sie aufgrund von Einschränkungen bei der Sicherheit und Zuverlässigkeit migrieren. Weitere Informationen finden Sie unter Deserialisierungsrisiken bei der Verwendung von BinaryFormatter und verwandten Typen sowie unter Bevorzugte Alternativen.
Unterdrücken einer Warnung
Wenn Sie die veralteten APIs verwenden müssen, können Sie die Warnung bzw. den Fehler im Code oder in Ihrer Projektdatei unterdrücken.
Um nur einen einzelnen Verstoß zu unterdrücken, fügen Sie der Quelldatei Präprozessoranweisungen hinzu, um die Warnung zu deaktivieren und dann wieder zu aktivieren.
// Disable the warning.
#pragma warning disable SYSLIB0011
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0011
Um alle SYSLIB0011
-Warnungen in Ihrem Projekt zu unterdrücken, fügen Sie ihrer Projektdatei eine <NoWarn>
-Eigenschaft hinzu.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0011</NoWarn>
</PropertyGroup>
</Project>
Weitere Informationen finden Sie unter Unterdrücken von Warnungen.
Siehe auch
- Beheben von Fehlern aufgrund der Veraltung und Deaktivierung von BinaryFormatter
- BinaryFormatter-Serialisierungsmethoden veraltet und in ASP.NET-Apps verboten (.NET 5)
- BinaryFormatter-Serialisierungs-APIs erzeugen Compilerfehler (.NET 7)
- BinaryFormatter für die meisten Projekttypen deaktiviert (.NET 8)