Fonctionnalités obsolètes dans .NET 5+
À compter de .NET 5, certaines API qui sont récemment marquées comme obsolètes utilisent deux nouvelles propriétés sur ObsoleteAttribute.
La propriété ObsoleteAttribute.DiagnosticId indique au compilateur de générer des avertissements de build à l’aide d’un ID de diagnostic personnalisé. L’ID personnalisé permet de supprimer l’avertissement d’obsolescence de manière spécifique et distincte les uns des autres. Dans le cas des obsolescences .NET 5+, le format de l’ID de diagnostic personnalisé est
SYSLIB0XXX
.La propriété ObsoleteAttribute.UrlFormat indique au compilateur d’inclure un lien d’URL pour en savoir plus sur l’obsolescence.
Si vous recevez des avertissements ou rencontrez des erreurs de build en raison de l’utilisation d'une API obsolète, suivez les conseils spécifiques fournis pour l’ID de diagnostic répertorié dans la section Référence. Les avertissements ou les erreurs liés à ces obsolescences ne peuvent pas être supprimés à l’aide de l’ID (CS0618) de diagnostic standard pour les types ou membres obsolètes ; utilisez plutôt la valeur d’ID de diagnostic SYSLIB0XXX
personnalisé. Pour plus d’informations, consultez Supprimer des avertissements.
Informations de référence
Le tableau suivant fournit un index des obsolescences SYSLIB0XXX
dans .NET 5+.
ID de diagnostic | Avertissement ou erreur | Description |
---|---|---|
SYSLIB0001 | Avertissement | L’encodage UTF-7 n’est pas sécurisé et ne doit pas être utilisé. Envisagez d’utiliser UTF-8 à la place. |
SYSLIB0002 | Erreur | PrincipalPermissionAttribute n’est pas respecté par le runtime et ne doit pas être utilisé. |
SYSLIB0003 | Avertissement | La sécurité d’accès du code (CAS) n’est pas prise en charge ni respectée par le runtime. |
SYSLIB0004 | Avertissement | La fonctionnalité de région d’exécution contrainte (CER) n’est pas prise en charge. |
SYSLIB0005 | Avertissement | Le Global Assembly Cache (GAC) n’est pas pris en charge. |
SYSLIB0006 | Avertissement | Thread.Abort() n’est pas pris en charge et lève PlatformNotSupportedException. |
SYSLIB0007 | Avertissement | L’implémentation par défaut de cet algorithme de chiffrement n’est pas prise en charge. |
SYSLIB0008 | Avertissement | L’API CreatePdbGenerator() n’est pas prise en charge et lève PlatformNotSupportedException. |
SYSLIB0009 | Avertissement | La fonction AuthenticationManager n'est pas prise en charge. Méthodes qui lèvent une PlatformNotSupportedException ou n’ont aucune opération. |
SYSLIB0010 | Avertissement | Certaines API de communication à distance ne sont pas prises en charge et lèvent PlatformNotSupportedException. |
SYSLIB0011 | Avertissement | La sérialisation BinaryFormatter est obsolète et ne doit pas être utilisée. |
SYSLIB0012 | Avertissement | Assembly.CodeBase et Assembly.EscapedCodeBase sont uniquement inclus pour la compatibilité .NET Framework. Utilisez Assembly.Location à la place. |
SYSLIB0013 | Avertissement | 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. |
SYSLIB0014 | Avertissement | WebRequest, HttpWebRequest, ServicePoint et WebClient sont obsolètes. Utilisez HttpClient à la place. |
SYSLIB0015 | Avertissement | DisablePrivateReflectionAttribute n’a aucun effet dans .NET 6+. |
SYSLIB0016 | Avertissement | Utilisez les surcharges Graphics.GetContextInfo qui acceptent des arguments pour améliorer les performances et réduire les allocations. |
SYSLIB0017 | Avertissement | La signature de nom fort n’est pas prise en charge et lève PlatformNotSupportedException. |
SYSLIB0018 | Avertissement | Le chargement par réflexion uniquement n’est pas pris en charge et lève PlatformNotSupportedException. |
SYSLIB0019 | Avertissement | Les membres System.Runtime.InteropServices.RuntimeEnvironmentSystemConfigurationFile, GetRuntimeInterfaceAsIntPtr(Guid, Guid) et GetRuntimeInterfaceAsObject(Guid, Guid) ne sont plus pris en charge et lèvent PlatformNotSupportedException. |
SYSLIB0020 | Avertissement | JsonSerializerOptions.IgnoreNullValues est obsolète. Pour ignorer les valeurs Null lors de la sérialisation, définissez DefaultIgnoreCondition sur JsonIgnoreCondition.WhenWritingNull. |
SYSLIB0021 | Avertissement | Les types de chiffrement dérivés sont obsolètes. Utilisez plutôt la méthode Create sur le type de base. |
SYSLIB0022 | Avertissement | Les types Rijndael et RijndaelManaged sont obsolètes. Utilisez Aes à la place. |
SYSLIB0023 | Avertissement | RNGCryptoServiceProvider est obsolète. Pour générer un nombre aléatoire, utilisez l’une des méthodes statiques RandomNumberGenerator à la place. |
SYSLIB0024 | Avertissement | La création et le déchargement d’AppDomains ne sont pas pris en charge et lèvent une exception. |
SYSLIB0025 | Avertissement | SuppressIldasmAttribute n’a aucun effet dans .NET 6+. |
SYSLIB0026 | Avertissement | X509Certificate et X509Certificate2 sont immuables. Utilisez le constructeur approprié pour créer un certificat. |
SYSLIB0027 | Avertissement | PublicKey.Key est obsolète. Utilisez la méthode appropriée pour obtenir la clé publique, comme GetRSAPublicKey(). |
SYSLIB0028 | Avertissement | 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. |
SYSLIB0029 | Avertissement | ProduceLegacyHmacValues est obsolète. La production de valeurs HMAC héritées n’est plus prise en charge. |
SYSLIB0030 | Avertissement | HMACSHA1 utilise toujours l’implémentation d’algorithme fournie par la plateforme. Utilisez un constructeur sans le paramètre useManagedSha1 . |
SYSLIB0031 | Avertissement | CryptoConfig.EncodeOID(String) est obsolète. Utilisez la fonctionnalité ASN.1 fournie dans System.Formats.Asn1. |
SYSLIB0032 | Avertissement | La récupération à partir d’exceptions d’état de processus endommagés n’est pas prise en charge ; HandleProcessCorruptedStateExceptionsAttribute est ignoré. |
SYSLIB0033 | Avertissement | 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. |
SYSLIB0034 | Avertissement | CmsSigner(CspParameters) est obsolète. Utilisez un autre constructeur à la place. |
SYSLIB0035 | Avertissement | SignerInfo.ComputeCounterSignature() est obsolète. Utilisez plutôt la surcharge qui accepte un CmsSigner. |
SYSLIB0036 | Avertissement | Regex.CompileToAssembly est obsolète et non pris en charge. Utilisez plutôt RegexGeneratorAttribute avec le générateur source d’expression régulière. |
SYSLIB0037 | Avertissement | Les membres HashAlgorithm, ProcessorArchitecture et VersionCompatibility de AssemblyName sont obsolètes et non pris en charge. |
SYSLIB0038 | Avertissement | La méthode SerializationFormat.Binary est obsolète et ne doit pas être utilisée. |
SYSLIB0039 | Avertissement | Les versions TLS 1.0 et 1.1 présentent des vulnérabilités connues et ne sont pas recommandées. Utilisez une version TLS plus récente à la place, ou SslProtocols.None pour vous reporter aux valeurs par défaut du système d’exploitation. |
SYSLIB0040 | Avertissement | EncryptionPolicy.NoEncryption et EncryptionPolicy.AllowNoEncryption réduisent considérablement la sécurité et ne doivent pas être utilisés dans le code de production. |
SYSLIB0041 | Avertissement | L’algorithme de hachage par défaut et le nombre d’itérations dans les constructeurs Rfc2898DeriveBytes sont obsolètes et non sécurisés. Utilisez un constructeur qui accepte l’algorithme de hachage et le nombre d’itérations. |
SYSLIB0042 | Avertissement | ToXmlString et FromXmlString n’ont pas d’implémentation pour les types de chiffrement de courbe elliptique (ECC) et sont obsolètes. Utilisez un format d’importation et d’exportation standard comme ExportSubjectPublicKeyInfo ou ImportSubjectPublicKeyInfo pour les clés publiques, et ExportPkcs8PrivateKey ou ImportPkcs8PrivateKey pour les clés privées. |
SYSLIB0043 | Avertissement | ECDiffieHellmanPublicKey.ToByteArray() et le constructeur associé n’ont pas d’implémentation cohérente et interopérable sur toutes les plateformes. Utilisez ECDiffieHellmanPublicKey.ExportSubjectPublicKeyInfo() à la place. |
SYSLIB0044 | Avertissement | AssemblyName.CodeBase et AssemblyName.EscapedCodeBase sont obsolètes. Leur utilisation pour le chargement d’un assembly n’est pas prise en charge. |
SYSLIB0045 | Avertissement | Les méthodes de fabrique de chiffrement qui acceptent un nom d’algorithme sont obsolètes. Utilisez plutôt la méthode de fabrique Create sans paramètre sur le type d’algorithme. |
SYSLIB0046 | Avertissement | La méthode ControlledExecution.Run(Action, CancellationToken) peut endommager le processus et ne doit pas être utilisée dans le code de production. |
SYSLIB0047 | Avertissement | XmlSecureResolver est obsolète. Utilisez plutôt XmlResolver.ThrowingResolver lorsque vous tentez d’interdire la résolution d’entités externes XML. |
SYSLIB0048 | Avertissement | RSA.EncryptValue(Byte[]) et RSA.DecryptValue(Byte[]) sont obsolètes. Utilisez plutôt RSA.Encrypt et RSA.Decrypt. |
SYSLIB0049 | Avertissement | JsonSerializerOptions.AddContext est obsolète. Pour inscrire un JsonSerializerContext, utilisez la propriété TypeInfoResolver ou TypeInfoResolverChain. |
SYSLIB0050 | Avertissement | La sérialisation basée sur un formateur est obsolète et ne doit pas être utilisée. |
SYSLIB0051 | Avertissement | Les API qui prennent en charge la sérialisation obsolète basée sur le formateur sont obsolètes. Elles ne doivent pas être appelées ou étendues par le code de l’application. |
SYSLIB0052 | Avertissement | Les API qui prennent en charge des mécanismes obsolètes pour l’extensibilité Regex sont obsolètes. |
SYSLIB0053 | Avertissement | AesGcm doit indiquer la taille de balise requise pour le chiffrement et le déchiffrement. Utilisez un constructeur qui accepte la taille de balise. |
SYSLIB0054 | Avertissement | Thread.VolatileRead et Thread.VolatileWrite sont obsolètes. Utilisez plutôt Volatile.Read ou Volatile.Write. |
SYSLIB0055 | Avertissement | Les méthodes AdvSimd.ShiftRightLogicalRoundedNarrowingSaturate* avec des paramètres signés sont obsolètes. Utilisez plutôt les surcharges non signées. |
SYSLIB0056 | Avertissement | Assembly.LoadFrom avec un AssemblyHashAlgorithm personnalisé est obsolète. Utilisez les surcharges sans AssemblyHashAlgorithm . |
SYSLIB0057 | Avertissement | Les constructeurs X509Certificate2 et X509Certificate pour le contenu binaire et fichier sont obsolètes. |
Supprimer les avertissements
Nous vous recommandons d’utiliser une solution de contournement disponible dans la mesure du possible. Toutefois, si vous ne pouvez pas modifier votre code, vous pouvez supprimer les avertissements via une directive #pragma
ou un paramètre de projet <NoWarn>
. Si vous devez utiliser les API obsolètes et que le diagnostic SYSLIB0XXX
ne s’affiche pas comme une erreur, vous pouvez supprimer l’avertissement dans le code ou dans votre Fichier projet.
Pour supprimer les avertissements dans le code :
// Disable the warning.
#pragma warning disable SYSLIB0001
// Code that uses obsolete API.
//...
// Re-enable the warning.
#pragma warning restore SYSLIB0001
Pour supprimer les avertissements dans un fichier projet :
<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>
Notes
La suppression des avertissements de cette façon désactive uniquement les avertissements d’obsolescence que vous avez spécifiés. Cela ne désactive pas les autres avertissements, y compris les avertissements d’obsolescence avec des ID de diagnostic différents.
Voir aussi
- Obsolescence d’API avec ID de diagnostics autres que ceux par défaut (.NET 5)
- Obsolescence d’API avec ID de diagnostics autres que ceux par défaut (.NET 6)
- Obsolescence d’API avec ID de diagnostics autres que ceux par défaut (.NET 7)
- Obsolescence d’API avec ID de diagnostics autres que ceux par défaut (.NET 8)