Fitur kedaluwarsa di .NET 5+
Mulai dari .NET 5, beberapa API yang baru ditandai sebagai usang menggunakan dua properti baru pada ObsoleteAttribute.
Properti ObsoleteAttribute.DiagnosticId memberi tahu pengkompilasi untuk menghasilkan peringatan build menggunakan ID diagnostik kustom. ID kustom memungkinkan peringatan usang ditekan secara khusus dan terpisah satu sama lain. Dalam kasus kedaluarsa .NET 5+, format untuk ID diagnostik kustom adalah
SYSLIB0XXX
.Properti ObsoleteAttribute.UrlFormat memberi tahu pengkompilasi untuk menyertakan tautan URL untuk mempelajari selengkapnya tentang kedaluwarsa.
Jika Anda mengalami peringatan atau kesalahan build karena penggunaan API usang, ikuti panduan khusus yang disediakan untuk ID diagnostik yang tercantum di bagian Referensi . Peringatan atau kesalahan untuk keusangan ini tidak dapat ditekan menggunakan ID diagnostik standar (CS0618) untuk jenis atau anggota usang; gunakan nilai ID diagnostik kustom SYSLIB0XXX
sebagai gantinya. Untuk informasi selengkapnya, lihat Menyembunyikan peringatan.
Referensi
Tabel berikut ini menyediakan indeks ke usang SYSLIB0XXX
di .NET 5+.
ID diagnostik | Peringatan atau kesalahan | Deskripsi |
---|---|---|
SYSLIB0001 | Peringatan | Pengodean UTF-7 tidak aman dan tidak boleh digunakan. Pertimbangkan untuk menggunakan UTF-8 sebagai gantinya. |
SYSLIB0002 | Kesalahan | PrincipalPermissionAttribute tidak diterapkan oleh runtime dan tidak boleh digunakan. |
SYSLIB0003 | Peringatan | Keamanan akses kode (CAS) tidak didukung atau diterapkan oleh runtime. |
SYSLIB0004 | Peringatan | Fitur wilayah eksekusi terbatas (CER) tidak didukung. |
SYSLIB0005 | Peringatan | Singgahan perakitan global (GAC) tidak didukung. |
SYSLIB0006 | Peringatan | Thread.Abort() tidak didukung dan memunculkan PlatformNotSupportedException. |
SYSLIB0007 | Peringatan | Penerapan default dari algoritma kriptografis ini tidak didukung. |
SYSLIB0008 | Peringatan | API CreatePdbGenerator() tidak didukung dan memunculkan PlatformNotSupportedException. |
SYSLIB0009 | Peringatan | AuthenticationManager tidak didukung. Metode tidak akan no-op atau melempar PlatformNotSupportedException. |
SYSLIB0010 | Peringatan | Beberapa API jarak jauh tidak didukung dan memunculkan PlatformNotSupportedException. |
SYSLIB0011 | Peringatan | Serialisasi BinaryFormatter sudah kedaluwarsa dan tidak boleh digunakan. |
SYSLIB0012 | Peringatan | Assembly.CodeBase dan Assembly.EscapedCodeBase hanya disertakan untuk kompatibilitas .NET Framework. Gunakan Assembly.Location sebagai gantinya. |
SYSLIB0013 | Peringatan | Uri.EscapeUriString(String) dapat merusak string Uri dalam beberapa kasus. Pertimbangkan untuk menggunakan Uri.EscapeDataString(String) komponen string kueri sebagai gantinya. |
SYSLIB0014 | Peringatan | WebRequest, HttpWebRequest, ServicePoint, dan WebClient sudah usang. Gunakan HttpClient sebagai gantinya. |
SYSLIB0015 | Peringatan | DisablePrivateReflectionAttribute tidak berpengaruh pada .NET 6+. |
SYSLIB0016 | Peringatan | Gunakan overload Graphics.GetContextInfo yang menerima argumen untuk performa yang lebih baik dan alokasi yang lebih sedikit. |
SYSLIB0017 | Peringatan | Penandatanganan nama yang kuat tidak didukung dan melempar PlatformNotSupportedException. |
SYSLIB0018 | Peringatan | Pemuatan khusus refleksi tidak didukung dan melempar PlatformNotSupportedException. |
SYSLIB0019 | Peringatan | Anggota System.Runtime.InteropServices.RuntimeEnvironment, SystemConfigurationFile, GetRuntimeInterfaceAsIntPtr(Guid, Guid), dan GetRuntimeInterfaceAsObject(Guid, Guid) tidak lagi didukung dan dilempar PlatformNotSupportedException. |
SYSLIB0020 | Peringatan | JsonSerializerOptions.IgnoreNullValues sudah usang. Untuk mengabaikan nilai null saat membuat serialisasi, atur DefaultIgnoreCondition ke JsonIgnoreCondition.WhenWritingNull. |
SYSLIB0021 | Peringatan | Jenis kriptografi turunan sudah usang. sebagai gantinya, gunakan metode Create pada jenis dasar. |
SYSLIB0022 | Peringatan | Jenis Rijndael dan RijndaelManaged sudah usang. Gunakan Aes sebagai gantinya. |
SYSLIB0023 | Peringatan | RNGCryptoServiceProvider sudah usang. Untuk menghasilkan angka acak, gunakan salah satu metode statis RandomNumberGeneratorsebagai gantinya. |
SYSLIB0024 | Peringatan | Membuat dan membongkar AppDomains tidak didukung dan melemparkan pengecualian. |
SYSLIB0025 | Peringatan | SuppressIldasmAttribute tidak berpengaruh pada .NET 6+. |
SYSLIB0026 | Peringatan | X509Certificate and X509Certificate2 tidak dapat diubah. Gunakan konstruktor yang sesuai untuk membuat sertifikat baru. |
SYSLIB0027 | Peringatan | PublicKey.Key sudah usang. Gunakan metode yang sesuai untuk mendapatkan kunci umum, seperti GetRSAPublicKey(). |
SYSLIB0028 | Peringatan | X509Certificate2.PrivateKey sudah usang. Gunakan metode yang sesuai untuk mendapatkan kunci privat, seperti RSACertificateExtensions.GetRSAPrivateKey(X509Certificate2), atau gunakan X509Certificate2.CopyWithPrivateKey(ECDiffieHellman) metode untuk membuat instans baru dengan kunci privat. |
SYSLIB0029 | Peringatan | ProduceLegacyHmacValues sudah usang. Menghasilkan nilai HMAC lama tidak lagi didukung. |
SYSLIB0030 | Peringatan | HMACSHA1 selalu menggunakan implementasi algoritma yang disediakan oleh platform. Gunakan konstruktor tanpa parameter useManagedSha1 . |
SYSLIB0031 | Peringatan | CryptoConfig.EncodeOID(String) sudah usang. Gunakan fungsionalitas ASN.1 yang disediakan di System.Formats.Asn1. |
SYSLIB0032 | Peringatan | Pemulihan dari pengecualian status proses yang rusak tidak didukung; HandleProcessCorruptedStateExceptionsAttribute diabaikan. |
SYSLIB0033 | Peringatan | Rfc2898DeriveBytes.CryptDeriveKey(String, String, Int32, Byte[]) usang dan tidak didukung. Gunakan PasswordDeriveBytes.CryptDeriveKey(String, String, Int32, Byte[]) sebagai gantinya. |
SYSLIB0034 | Peringatan | CmsSigner(CspParameters) sudah usang. Gunakan konstruktor alternatif sebagai gantinya. |
SYSLIB0035 | Peringatan | SignerInfo.ComputeCounterSignature() sudah usang. Gunakan kelebihan beban yang menerima CmsSigner sebagai gantinya. |
SYSLIB0036 | Peringatan | Regex.CompileToAssembly sudah kedaluwarsa dan tidak didukung. Gunakan RegexGeneratorAttribute dengan generator sumber regex sebagai gantinya. |
SYSLIB0037 | Peringatan | Anggota AssemblyName, HashAlgorithm, ProcessorArchitecture, dan VersionCompatibility sudah kedaluwarsa dan tidak didukung. |
SYSLIB0038 | Peringatan | SerializationFormat.Binary sudah kedaluwarsa dan tidak boleh digunakan. |
SYSLIB0039 | Peringatan | TLS versi 1.0 dan 1.1 memiliki kerentanan yang diketahui dan tidak direkomendasikan. Gunakan versi TLS yang lebih baru, atau gunakan SslProtocols.None untuk mengikuti default OS. |
SYSLIB0040 | Peringatan | EncryptionPolicy.NoEncryption dan EncryptionPolicy.AllowNoEncryption secara signifikan mengurangi keamanan dan tidak boleh digunakan dalam kode produksi. |
SYSLIB0041 | Peringatan | Algoritme hash default dan jumlah perulangan di konstruktor Rfc2898DeriveBytes sudah usang dan tidak aman. Gunakan konstruktor yang menerima algoritme hash dan jumlah perulangan. |
SYSLIB0042 | Peringatan | ToXmlString dan FromXmlString tidak memiliki penerapan untuk jenis kriptografi kurva eliptik (ECC), dan sudah kedaluwarsa. Gunakan format impor dan ekspor standar seperti ExportSubjectPublicKeyInfo atau ImportSubjectPublicKeyInfo untuk kunci privat, dan ExportPkcs8PrivateKey atau ImportPkcs8PrivateKey untuk kunci privat. |
SYSLIB0043 | Peringatan | ECDiffieHellmanPublicKey.ToByteArray() dan konstruktor terkait tidak memiliki penerapan yang konsisten dan dapat dioperasikan di semua platform. Gunakan ECDiffieHellmanPublicKey.ExportSubjectPublicKeyInfo() sebagai gantinya. |
SYSLIB0044 | Peringatan | AssemblyName.CodeBase dan AssemblyName.EscapedCodeBase sudah usang. Menggunakannya untuk memuat rakitan tidak didukung. |
SYSLIB0045 | Peringatan | Metode pabrik kriptografi yang menerima nama algoritma sudah usang. Gunakan metode pabrik tanpa Create parameter pada jenis algoritma sebagai gantinya. |
SYSLIB0046 | Peringatan | Metode ControlledExecution.Run(Action, CancellationToken) ini mungkin merusak proses dan tidak boleh digunakan dalam kode produksi. |
SYSLIB0047 | Peringatan | XmlSecureResolver sudah usang. Gunakan XmlResolver.ThrowingResolver sebagai gantinya saat mencoba melarang resolusi entitas eksternal XML. |
SYSLIB0048 | Peringatan | RSA.EncryptValue(Byte[]) dan RSA.DecryptValue(Byte[]) sudah usang. Gunakan RSA.Encrypt dan RSA.Decrypt sebagai gantinya. |
SYSLIB0049 | Peringatan | JsonSerializerOptions.AddContext sudah usang. Untuk mendaftarkan JsonSerializerContext, gunakan properti TypeInfoResolver atau TypeInfoResolverChain. |
SYSLIB0050 | Peringatan | Serialisasi berbasis formatter usang dan tidak boleh digunakan. |
SYSLIB0051 | Peringatan | API yang mendukung serialisasi berbasis formatter usang sudah usang. Mereka tidak boleh dipanggil atau diperluas oleh kode aplikasi. |
SYSLIB0052 | Peringatan | API yang mendukung mekanisme usang untuk ekstensibilitas Regex sudah usang. |
SYSLIB0053 | Peringatan | AesGcm harus menunjukkan ukuran tag yang diperlukan untuk enkripsi dan dekripsi. Gunakan konstruktor yang menerima ukuran tag. |
SYSLIB0054 | Peringatan | Thread.VolatileRead dan Thread.VolatileWrite sudah usang. Gunakan Volatile.Read atau Volatile.Write sebagai gantinya. |
SYSLIB0055 | Peringatan | AdvSimd.ShiftRightLogicalRoundedNarrowingSaturate* metode dengan parameter yang ditandatangani sudah usang. Gunakan kelebihan beban yang tidak ditandatangani sebagai gantinya. |
SYSLIB0056 | Peringatan | Assembly.LoadFrom dengan kustom AssemblyHashAlgorithm sudah usang. Gunakan kelebihan beban tanpa AssemblyHashAlgorithm . |
SYSLIB0057 | Peringatan | X509Certificate2 dan X509Certificate konstruktor untuk biner dan konten file sudah usang. |
Menutupi peringatan
Sebaiknya Anda menggunakan solusi yang tersedia jika memungkinkan. Namun, jika Anda tidak dapat mengubah kode, Anda dapat menyembunyikan peringatan melalui arahan #pragma
atau pengaturan proyek <NoWarn>
. Jika Anda harus menggunakan API kedaluwarsa dan diagnostik SYSLIB0XXX
tidak muncul sebagai kesalahan, Anda dapat menyembunyikan peringatan dalam kode atau dalam file proyek Anda.
Untuk menutupi peringatan dalam kode:
// Disable the warning.
#pragma warning disable SYSLIB0001
// Code that uses obsolete API.
//...
// Re-enable the warning.
#pragma warning restore SYSLIB0001
Untuk menutupi peringatan dalam file proyek:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<!-- NoWarn below suppresses SYSLIB0001 project-wide -->
<NoWarn>$(NoWarn);SYSLIB0001</NoWarn>
<!-- To suppress multiple warnings, you can use multiple NoWarn elements -->
<NoWarn>$(NoWarn);SYSLIB0002</NoWarn>
<NoWarn>$(NoWarn);SYSLIB0003</NoWarn>
<!-- Alternatively, you can suppress multiple warnings by using a semicolon-delimited list -->
<NoWarn>$(NoWarn);SYSLIB0001;SYSLIB0002;SYSLIB0003</NoWarn>
</PropertyGroup>
</Project>
Catatan
Menyembunyikan peringatan dengan cara ini hanya menonaktifkan peringatan kedaluwarsa yang Anda tentukan. Tindakan ini tidak menonaktifkan peringatan lain, termasuk peringatan usang dengan ID diagnostik yang berbeda.