SYSLIB0011: Serialisasi BinaryFormatter sudah usang
Karena kerentanan keamanan di BinaryFormatter, API berikut ditandai sebagai usang di .NET 5. Menggunakannya dalam kode menghasilkan peringatan atau kesalahan SYSLIB0011
pada waktu kompilasi.
- System.Exception.SerializeObjectState
- BinaryFormatter.Serialize
- BinaryFormatter.Deserialize
- Formatter.Serialize(Stream, Object)
- Formatter.Deserialize(Stream)
- IFormatter.Serialize(Stream, Object)
- IFormatter.Deserialize(Stream)
Mulai dari .NET 8, BinaryFormatter.Serialize dan BinaryFormatter.Deserialize melemparkan NotSupportedException pada waktu proses pada sebagian besar jenis proyek. Selain itu, PreserializedResourceWriter.AddBinaryFormattedResource(String, Byte[], String) usang sebagai peringatan, dan API berikut usang sebagai kesalahan:
- System.Runtime.Serialization.Formatter
- System.Runtime.Serialization.IFormatter
- System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
Penyelesaian masalah
Jika Anda menggunakan BinaryFormatter, Anda harus bermigrasi jauh darinya karena kelemahan keamanan dan keandalannya. Untuk informasi selengkapnya, lihat Risiko deserialisasi dalam penggunaan BinaryFormatter dan jenis terkait dan Alternatif pilihan.
Menyembunyikan peringatan
Jika Anda harus menggunakan API usang, Anda dapat menekan peringatan/kesalahan dalam kode atau dalam file proyek Anda.
Untuk menekan hanya satu pelanggaran, tambahkan direktif praprosedur ke file sumber Anda untuk menonaktifkan lalu mengaktifkan kembali peringatan.
// Disable the warning.
#pragma warning disable SYSLIB0011
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0011
Untuk menekan semua SYSLIB0011
peringatan dalam proyek Anda, tambahkan <NoWarn>
properti ke file proyek Anda.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0011</NoWarn>
</PropertyGroup>
</Project>
Untuk informasi selengkapnya, lihat Menyembunyikan peringatan.