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
Action recommandée
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
- System.Reflection.Assembly.ReflectionOnlyLoad
- System.Reflection.Assembly.ReflectionOnlyLoadFrom(String)
- System.Type.ReflectionOnlyGetType(String, Boolean, Boolean)
SYSLIB0019
- System.Runtime.InteropServices.RuntimeEnvironment.SystemConfigurationFile
- System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeInterfaceAsIntPtr(Guid, Guid)
- System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeInterfaceAsObject(Guid, Guid)
SYSLIB0020
SYSLIB0021
- System.Security.Cryptography.AesCryptoServiceProvider
- System.Security.Cryptography.AesManaged
- System.Security.Cryptography.DESCryptoServiceProvider
- System.Security.Cryptography.MD5CryptoServiceProvider
- System.Security.Cryptography.RC2CryptoServiceProvider
- System.Security.Cryptography.SHA1CryptoServiceProvider
- System.Security.Cryptography.SHA1Managed
- System.Security.Cryptography.SHA256Managed
- System.Security.Cryptography.SHA256CryptoServiceProvider
- System.Security.Cryptography.SHA384Managed
- System.Security.Cryptography.SHA384CryptoServiceProvider
- System.Security.Cryptography.SHA512Managed
- System.Security.Cryptography.SHA512CryptoServiceProvider
- System.Security.Cryptography.TripleDESCryptoServiceProvider