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

Certaines API ont été marquées comme obsolètes, à partir de .NET 7. 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 7 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é
SYSLIB0036 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. Avertissement
SYSLIB0037 Les membres HashAlgorithm, ProcessorArchitecture et VersionCompatibility de AssemblyName sont obsolètes et non pris en charge. Avertissement
SYSLIB0038 La méthode SerializationFormat.Binary est obsolète et ne doit pas être utilisée. Avertissement
SYSLIB0039 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. Avertissement
SYSLIB0040 EncryptionPolicy.NoEncryption et EncryptionPolicy.AllowNoEncryption réduisent considérablement la sécurité et ne doivent pas être utilisés dans le code de production. Avertissement
SYSLIB0041 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. Avertissement
SYSLIB0042 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. Avertissement
SYSLIB0043 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. Avertissement
SYSLIB0044 AssemblyName.CodeBase et AssemblyName.EscapedCodeBase sont obsolètes. Avertissement
SYSLIB0045 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. Avertissement
SYSLIB0047 XmlSecureResolver est obsolète. Utilisez plutôt XmlResolver.ThrowingResolver pour interdire la résolution des ressources XML externes. Avertissement

Version introduite

.NET 7

Type de changement cassant

Ces obsolescences peuvent affecter la compatibilité de la source.

  • 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

SYSLIB0036

SYSLIB0037

SYSLIB0038

SYSLIB0039

SYSLIB0040

SYSLIB0041

SYSLIB0042

SYSLIB0043

SYSLIB0045

SYSLIB0047

Voir aussi