Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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, BinaryFormatter.Serialize i BinaryFormatter.Deserialize zgłaszają NotSupportedException w czasie wykonywania w większości typów projektów. Ponadto PreserializedResourceWriter.AddBinaryFormattedResource(String, Byte[], String) jest oznaczone jako przestarzałe jako ostrzeżenie, a następujące interfejsy API są oznaczone jako przestarzałe jako błąd:
- System.Runtime.Serialization.Formatter
- System.Runtime.Serialization.IFormatter
- System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
Rozwiązania alternatywne
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 Ryzyka deserializacji podczas użycia 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 ostrzeżenia SYSLIB0011 w projekcie, dodaj właściwość <NoWarn> do pliku projektu.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0011</NoWarn>
</PropertyGroup>
</Project>
Aby uzyskać więcej informacji, zobacz Pomijanie ostrzeżeń.