Obsolescence d’API avec ID de diagnostics autres que ceux par défaut (.NET 6)

Certaines API ont été marquées comme obsolètes, à partir de .NET 6. Ce changement cassant est spécifique aux API qui ont été marquées comme obsolètes avec un ID de diagnostic personnalisé. La suppression de l’ID de diagnostic d’obsolescence par défaut, qui est CS0618 pour le compilateur C#, ne supprime pas les avertissements générés par le compilateur lorsque ces API sont utilisées.

Description de la modification

Dans les versions précédentes de .NET, ces API peuvent être utilisées sans avertissement de build. Dans .NET 6 et versions ultérieures, l’utilisation de ces API génère un avertissement ou une erreur au moment de la compilation avec un ID de diagnostic personnalisé. L’utilisation des ID de diagnostic personnalisés vous permet de supprimer individuellement des avertissements d’obsolescence au lieu de tous les supprimer.

Le tableau suivant répertorie les ID de diagnostic personnalisés et leurs messages d’avertissement correspondants pour les API obsolètes.

ID de diagnostic Description Gravité
SYSLIB0013 Uri.EscapeUriString(String) peut endommager la chaîne d’URI dans certains cas. Envisagez plutôt d’utiliser Uri.EscapeDataString(String) pour les composants de chaîne de requête. Avertissement
SYSLIB0014 WebRequest, HttpWebRequest, ServicePoint et WebClient sont obsolètes. Utilisez HttpClient à la place. Avertissement
SYSLIB0015 DisablePrivateReflectionAttribute n’a aucun effet dans .NET 6+. Avertissement
SYSLIB0016 Utilisez les surcharges Graphics.GetContextInfo qui acceptent des arguments pour améliorer les performances et réduire les allocations. Avertissement
SYSLIB0017 La signature de nom fort n’est pas prise en charge et lève PlatformNotSupportedException. Avertissement
SYSLIB0018 Le chargement par réflexion uniquement n’est pas pris en charge et lève PlatformNotSupportedException. Avertissement
SYSLIB0019 Les membres System.Runtime.InteropServices.RuntimeEnvironmentSystemConfigurationFile, GetRuntimeInterfaceAsIntPtr(Guid, Guid) et GetRuntimeInterfaceAsObject(Guid, Guid) ne sont plus pris en charge et lèvent PlatformNotSupportedException. Avertissement
SYSLIB0020 JsonSerializerOptions.IgnoreNullValues est obsolète. Pour ignorer les valeurs Null lors de la sérialisation, définissez DefaultIgnoreCondition sur JsonIgnoreCondition.WhenWritingNull. Avertissement
SYSLIB0021 Les types de chiffrement dérivés sont obsolètes. Utilisez plutôt la méthode Create sur le type de base. Avertissement
SYSLIB0022 Les types Rijndael et RijndaelManaged sont obsolètes. Utilisez Aes à la place. Avertissement
SYSLIB0023 RNGCryptoServiceProvider est obsolète. Pour générer un nombre aléatoire, utilisez l’une des méthodes statiques RandomNumberGenerator à la place. Avertissement
SYSLIB0024 La création et le déchargement d’AppDomains ne sont pas pris en charge et lèvent une exception. Avertissement
SYSLIB0025 SuppressIldasmAttribute n’a aucun effet dans .NET 6+. Avertissement
SYSLIB0026 X509Certificate et X509Certificate2 sont immuables. Utilisez le constructeur approprié pour créer un certificat. Avertissement
SYSLIB0027 PublicKey.Key est obsolète. Utilisez la méthode appropriée pour obtenir la clé publique, comme GetRSAPublicKey(). Avertissement
SYSLIB0028 X509Certificate2.PrivateKey est obsolète. Utilisez la méthode appropriée pour obtenir la clé privée, comme RSACertificateExtensions.GetRSAPrivateKey(X509Certificate2), ou utilisez la méthode X509Certificate2.CopyWithPrivateKey(ECDiffieHellman) pour créer une instance avec une clé privée. Avertissement
SYSLIB0029 ProduceLegacyHmacValues est obsolète. La production de valeurs HMAC héritées n’est plus prise en charge. Avertissement
SYSLIB0030 HMACSHA1 utilise toujours l’implémentation d’algorithme fournie par la plateforme. Utilisez un constructeur sans le paramètre useManagedSha1. Avertissement
SYSLIB0031 CryptoConfig.EncodeOID(String) est obsolète. Utilisez la fonctionnalité ASN.1 fournie dans System.Formats.Asn1. Avertissement
SYSLIB0032 La récupération à partir d’exceptions d’état de processus endommagés n’est pas prise en charge ; HandleProcessCorruptedStateExceptionsAttribute est ignoré. Avertissement
SYSLIB0033 Rfc2898DeriveBytes.CryptDeriveKey(String, String, Int32, Byte[]) est obsolète et n’est pas pris en charge. Utilisez PasswordDeriveBytes.CryptDeriveKey(String, String, Int32, Byte[]) à la place. Avertissement
SYSLIB0034 CmsSigner(CspParameters) est obsolète. Utilisez un autre constructeur à la place. Avertissement
SYSLIB0035 SignerInfo.ComputeCounterSignature() est obsolète. Utilisez plutôt la surcharge qui accepte un CmsSigner. Avertissement

Version introduite

.NET 6

  • Suivez les instructions spécifiques fournies pour chaque ID de diagnostic à l’aide du lien URL fourni sur l’avertissement.

  • Les avertissements ou les erreurs liés à ces obsolescences ne peuvent pas être supprimés à l’aide de l’ID de diagnostic standard pour les types ou membres obsolètes ; utilisez plutôt la valeur d’ID de diagnostic SYSLIBxxxx personnalisé.

API affectées

SYSLIB0013

SYSLIB0014

SYSLIB0015

SYSLIB0016

SYSLIB0017

SYSLIB0018

SYSLIB0019

SYSLIB0020

SYSLIB0021

SYSLIB0022

SYSLIB0023

SYSLIB0024

SYSLIB0025

SYSLIB0026

SYSLIB0027

SYSLIB0028

SYSLIB0029

SYSLIB0030

SYSLIB0031

SYSLIB0032

SYSLIB0033

SYSLIB0034

SYSLIB0035

Voir aussi