Veraltete APIs ohne Standarddiagnose-IDs (.NET 7)
Einige APIs sind ab .NET 7 als veraltet gekennzeichnet. Dieser Breaking Change ist spezifisch für APIs, die mit einer benutzerdefinierten Diagnose-ID als veraltet markiert wurden. Das Unterdrücken der Standardveraltungsdiagnose-ID (CS0618 für den C#-Compiler) unterdrückt nicht die Warnungen, die der Compiler generiert, wenn diese APIs verwendet werden.
Änderungsbeschreibung
In früheren .NET-Versionen können diese APIs ohne eine Buildwarnung verwendet werden. In .NET 7 und höheren Versionen führt die Verwendung dieser APIs zur Kompilierzeit zu einer Warnung oder einem Fehler mit einer benutzerdefinierten Diagnose-ID. Durch die Verwendung benutzerdefinierter Diagnose-IDs können Sie die veralteten Warnungen einzeln anstatt alle zusammen unterdrücken.
In der folgenden Tabelle werden die benutzerdefinierten Diagnose-IDs und die zugehörigen Warnmeldungen für veraltete APIs aufgelistet.
Diagnose-ID | BESCHREIBUNG | severity |
---|---|---|
SYSLIB0036 | Regex.CompileToAssembly ist veraltet und wird nicht unterstützt. Verwenden Sie stattdessen RegexGeneratorAttribute mit dem Quellen-Generator für reguläre Ausdrücke. |
Warnung |
SYSLIB0037 | AssemblyName-Member-HashAlgorithm, ProcessorArchitecture und VersionCompatibility sind veraltet und werden nicht unterstützt. | Warnung |
SYSLIB0038 | SerializationFormat.Binary ist veraltet und sollte nicht verwendet werden. | Warnung |
SYSLIB0039 | Die TLS-Versionen 1.0 und 1.1 weisen bekannte Sicherheitsrisiken auf und werden nicht empfohlen. Verwenden Sie stattdessen eine neuere TLS-Version, oder verwenden Sie SslProtocols.None, um die Standardeinstellungen des Betriebssystems zu verschieben. | Warnung |
SYSLIB0040 | EncryptionPolicy.NoEncryption und EncryptionPolicy.AllowNoEncryption reduzieren die Sicherheit erheblich und sollten nicht im Produktionscode verwendet werden. | Warnung |
SYSLIB0041 | Standardhashalgorithmus und Iterationsanzahl in Rfc2898DeriveBytes-Konstruktoren sind veraltet und unsicher. Verwenden Sie einen Konstruktor, der den Hashalgorithmus und die Anzahl der Iterationen akzeptiert. | Warnung |
SYSLIB0042 | ToXmlString und FromXmlString bieten keine Implementierung für ECC-Typen (Elliptic Curve Cryptography, Kryptografie für elliptische Kurve) und sind veraltet. Verwenden Sie ein standardmäßiges Import- und Exportformat wie ExportSubjectPublicKeyInfo oder ImportSubjectPublicKeyInfo für öffentliche Schlüssel und ExportPkcs8PrivateKey oder ImportPkcs8PrivateKey für private Schlüssel. |
Warnung |
SYSLIB0043 | ECDiffieHellmanPublicKey.ToByteArray() und der zugeordnete Konstruktor verfügen nicht über eine konsistente und interoperable Implementierung auf allen Plattformen. Verwenden Sie stattdessen ECDiffieHellmanPublicKey.ExportSubjectPublicKeyInfo(). | Warnung |
SYSLIB0044 | AssemblyName.CodeBase und AssemblyName.EscapedCodeBase sind veraltet. | Warnung |
SYSLIB0045 | Kryptografische Factorymethoden, die einen Algorithmusnamen akzeptieren, sind veraltet. Verwenden Sie stattdessen die parameterlose Factorymethode Create für den Algorithmustyp. |
Warnung |
SYSLIB0047 | XmlSecureResolver ist veraltet. Verwenden Sie stattdessen XmlResolver.ThrowingResolver , um die Auflösung externer XML-Ressourcen zu verbieten. |
Warnung |
Eingeführt in Version
.NET 7
Typ des Breaking Changes
Diese veralteten APIs können sich auf die Quellkompatibilität auswirken.
Empfohlene Maßnahme
Befolgen Sie die Anweisungen für die einzelnen Diagnose-IDs, indem Sie den URL-Link verwenden, der in der Warnung bereitgestellt wird.
Warnungen oder Fehler für diese veralteten Elemente können nicht mithilfe der Standarddiagnose-ID für veraltete Typen oder Member unterdrückt werden. Verwenden Sie stattdessen den benutzerdefinierten Diagnose-ID-Wert im Format
SYSLIBxxxx
.
Betroffene APIs
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)