Bagikan melalui


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.

Lihat juga