SYSLIB0011: serializacja BinaryFormatter jest przestarzała
Ze względu na luki w zabezpieczeniach w programie BinaryFormatternastępujące interfejsy API zostały oznaczone jako przestarzałe na platformie .NET 5. Użycie ich w kodzie generuje ostrzeżenie lub błąd SYSLIB0011
w czasie kompilacji.
- System.Exception.SerializeObjectState
- BinaryFormatter.Serialize
- BinaryFormatter.Deserialize
- Formatter.Serialize(Stream, Object)
- Formatter.Deserialize(Stream)
- IFormatter.Serialize(Stream, Object)
- IFormatter.Deserialize(Stream)
Począwszy od platformy .NET 8 i BinaryFormatter.SerializeBinaryFormatter.Deserialize zgłaszaj NotSupportedException w czasie wykonywania większość typów projektów. Ponadto PreserializedResourceWriter.AddBinaryFormattedResource(String, Byte[], String) jest przestarzałe jako ostrzeżenie, a następujące interfejsy API są przestarzałe jako błąd:
- System.Runtime.Serialization.Formatter
- System.Runtime.Serialization.IFormatter
- System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
Obejścia
Jeśli używasz programu BinaryFormatter, należy przeprowadzić migrację z dala od niej ze względu na jego wady zabezpieczeń i niezawodności. Aby uzyskać więcej informacji, zobacz Deserializacja ryzyka w użyciu binaryFormatter i powiązanych typów i preferowane alternatywy.
Pomijanie ostrzeżenia
Jeśli musisz używać przestarzałych interfejsów API, możesz pominąć ostrzeżenie/błąd w kodzie lub w pliku projektu.
Aby pominąć tylko jedno naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć ostrzeżenie.
// Disable the warning.
#pragma warning disable SYSLIB0011
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0011
Aby pominąć wszystkie SYSLIB0011
ostrzeżenia w projekcie, dodaj <NoWarn>
właściwość do pliku projektu.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0011</NoWarn>
</PropertyGroup>
</Project>
Aby uzyskać więcej informacji, zobacz Pomijanie ostrzeżeń.
Zobacz też
- Rozwiązywanie błędów obsoletionu i wyłączania elementu BinaryFormatter
- Metody serializacji BinaryFormatter są przestarzałe i zabronione w aplikacjach ASP.NET (.NET 5)
- Interfejsy API serializacji BinaryFormatter generują błędy kompilatora (.NET 7)
- BinaryFormatter wyłączony w większości typów projektów (.NET 8)