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.
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
SYSLIB0036
SYSLIB0037
SYSLIB0038
SYSLIB0039
SYSLIB0040
- System.Net.Security.EncryptionPolicy.AllowNoEncryption
- System.Net.Security.EncryptionPolicy.NoEncryption
SYSLIB0041
- Rfc2898DeriveBytes(String, Byte[])
- Rfc2898DeriveBytes(String, Int32)
- Rfc2898DeriveBytes(Byte[], Byte[], Int32)
- Rfc2898DeriveBytes(String, Byte[], Int32)
- Rfc2898DeriveBytes(String, Int32, Int32)
SYSLIB0042
- System.Security.Cryptography.ECDiffieHellmanCng.FromXmlString(String, ECKeyXmlFormat)
- System.Security.Cryptography.ECDiffieHellmanCng.ToXmlString(ECKeyXmlFormat)
- System.Security.Cryptography.ECDiffieHellmanCngPublicKey.FromXmlString(String)
- System.Security.Cryptography.ECDiffieHellmanCngPublicKey.ToXmlString()
- System.Security.Cryptography.ECDiffieHellmanPublicKey.ToXmlString()
- System.Security.Cryptography.ECDsaCng.FromXmlString(String, ECKeyXmlFormat)
- System.Security.Cryptography.ECDsaCng.ToXmlString(ECKeyXmlFormat)
SYSLIB0043
- System.Security.Cryptography.ECDiffieHellmanPublicKey.ToByteArray()
- ECDiffieHellmanPublicKey(Byte[])
SYSLIB0045
- System.Security.Cryptography.Aes.Create(String)
- System.Security.Cryptography.AsymmetricAlgorithm.Create(String)
- System.Security.Cryptography.DES.Create(String)
- System.Security.Cryptography.ECDiffieHellman.Create(String)
- System.Security.Cryptography.ECDsa.Create(String)
- System.Security.Cryptography.HashAlgorithm.Create(String)
- System.Security.Cryptography.KeyedHashAlgorithm.Create(String)
- System.Security.Cryptography.RandomNumberGenerator.Create(String)
- System.Security.Cryptography.RC2.Create(String)
- System.Security.Cryptography.Rijndael.Create(String)
- System.Security.Cryptography.RSA.Create(String)
- System.Security.Cryptography.SHA1.Create(String)
- System.Security.Cryptography.SHA256.Create(String)
- System.Security.Cryptography.SHA384.Create(String)
- System.Security.Cryptography.SHA512.Create(String)
- System.Security.Cryptography.SymmetricAlgorithm.Create(String)
- System.Security.Cryptography.TripleDES.Create(String)