SYSLIB0045: Beberapa metode pabrik kriptografi sudah usang
Metode berikut usang System.Security.Cryptography
, mulai dari .NET 7. Menggunakannya dalam kode menghasilkan peringatan SYSLIB0045
pada waktu kompilasi. Masing-masing metode pabrik ini menerima argumen string yang mewakili nama algoritma. Metode ini memanggil dan CryptoConfig.CreateFromName melemparkan hasilnya ke jenis pengembalian.
- Aes.Create(String)
- AsymmetricAlgorithm.Create(String)
- DES.Create(String)
- ECDiffieHellman.Create(String)
- ECDsa.Create(String)
- HashAlgorithm.Create(String)
- KeyedHashAlgorithm.Create(String)
- RandomNumberGenerator.Create(String)
- RC2.Create(String)
- Rijndael.Create(String)
- RSA.Create(String)
- SHA1.Create(String)
- SHA256.Create(String)
- SHA384.Create(String)
- SHA512.Create(String)
- SymmetricAlgorithm.Create(String)
- TripleDES.Create(String)
Metode ini ditandai [Obsolete]
karena dalam aplikasi yang dipangkas, metode tersebut dapat kembali null
ketika tidak akan berada dalam aplikasi yang tidak dipangkas. Selain itu, dalam aplikasi yang tidak dipangkas, perilaku berbasis pengecualian dari metode ini kadang-kadang mengejutkan penelepon, dan banyak pengidentifikasi terkenal dikaitkan dengan jenis yang ditandai [Obsolete]
sendiri .
Solusi Sementara
Panggilan yang meneruskan string konstanta harus diubah ke metode pabrik tanpa parameter atau panggilan yang kuat untuk membuat jenis yang sesuai. Misalnya, panggilan ke Aes.Create("AES")
dapat diganti dengan Aes.Create()
atau new AesCryptoServiceProvider()
. AesCryptoServiceProvider Karena jenisnya juga ditandai [Obsolete]
, Aes.Create()
adalah pengganti yang disukai.
Panggilan yang meneruskan string non-konstan dapat menggunakan tabel pencarian mereka sendiri atau diubah untuk memanggil CryptoConfig.CreateFromName secara langsung.
Menyembunyikan peringatan
Jika Anda harus menggunakan API usang, Anda dapat menekan peringatan 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 SYSLIB0045
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0045
Untuk menekan semua SYSLIB0045
peringatan dalam proyek Anda, tambahkan <NoWarn>
properti ke file proyek Anda.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0045</NoWarn>
</PropertyGroup>
</Project>
Untuk informasi selengkapnya, lihat Menyembunyikan peringatan.