Veraltete Features in .NET 5.0 und höher
Ab .NET 5 verwenden einige APIs, die neuerdings als veraltet gekennzeichnet sind, zwei neue Eigenschaften für ObsoleteAttribute.
Die Eigenschaft ObsoleteAttribute.DiagnosticId weist den Compiler an, Buildwarnungen mithilfe einer benutzerdefinierten Diagnose-ID zu generieren. Die benutzerdefinierte ID ermöglicht, dass Warnungen vor veralteten Elementen ausdrücklich und unabhängig voneinander unterdrückt werden können. Im Fall von veralteten Elementen in .NET 5.0 und höher lautet das Format für die benutzerdefinierte Diagnose-ID
SYSLIB0XXX
.Die Eigenschaft ObsoleteAttribute.UrlFormat weist den Compiler an, einen URL-Link einzuschließen, um mehr über das veraltete Element zu erfahren.
Wenn aufgrund einer veralteten API Buildwarnungen oder -fehler auftreten, müssen Sie die Anweisungen für die Diagnose-ID ausführen, die im Abschnitt Referenz aufgeführt sind. Warnungen oder Fehler für diese veralteten Elemente können nicht mithilfe der Standarddiagnose-ID (CS0618) für veraltete Typen oder Member unterdrückt werden. Verwenden Sie stattdessen die benutzerdefinierten Diagnose-ID-Werte im Format SYSLIB0XXX
. Weitere Informationen finden Sie unter Unterdrücken von Warnungen.
Verweis
In der folgenden Tabelle finden Sie einen Index für die SYSLIB0XXX
-Warnungen für veraltete Elemente in .NET 5.0 und höher.
Diagnose-ID | Warnung oder Fehler | BESCHREIBUNG |
---|---|---|
SYSLIB0001 | Warnung | Die UTF-7-Codierung ist unsicher und sollte nicht verwendet werden. Verwenden Sie stattdessen UTF-8. |
SYSLIB0002 | Fehler | PrincipalPermissionAttribute wird von der Runtime nicht berücksichtigt und darf nicht verwendet werden. |
SYSLIB0003 | Warnung | Die Codezugriffssicherheit (Code Access Security, CAS) wird von der Runtime nicht unterstützt oder nicht berücksichtigt. |
SYSLIB0004 | Warnung | Das Feature „Eingeschränkte Ausführungsregion (Constrained Execution Region, CER)“ wird nicht unterstützt. |
SYSLIB0005 | Warnung | Der globale Assemblycache (GAC) wird nicht unterstützt. |
SYSLIB0006 | Warnung | Thread.Abort() wird nicht unterstützt und löst PlatformNotSupportedException aus. |
SYSLIB0007 | Warnung | Die Standardimplementierung dieses Kryptografiealgorithmus wird nicht unterstützt. |
SYSLIB0008 | Warnung | Die CreatePdbGenerator()-API wird nicht unterstützt und löst PlatformNotSupportedExceptionaus. |
SYSLIB0009 | Warnung | AuthenticationManager wird nicht unterstützt. Methoden werden nicht ausgelöst oder lösen PlatformNotSupportedException aus. |
SYSLIB0010 | Warnung | Einige Remoting-APIs werden nicht unterstützt und lösen PlatformNotSupportedException aus. |
SYSLIB0011 | Warnung | Die BinaryFormatter-Serialisierung ist veraltet und sollte nicht verwendet werden. |
SYSLIB0012 | Warnung | Assembly.CodeBase und Assembly.EscapedCodeBase sind nur für die .NET Framework-Kompatibilität enthalten. Verwenden Sie stattdessen Assembly.Location. |
SYSLIB0013 | Warnung | Uri.EscapeUriString(String) kann in einigen Fällen die URI-Zeichenfolge beschädigen. Erwägen Sie stattdessen die Verwendung von Uri.EscapeDataString(String) für Komponenten von Abfragezeichenfolgen. |
SYSLIB0014 | Warnung | WebRequest, HttpWebRequest, ServicePoint und WebClient sind veraltet. Verwenden Sie stattdessen HttpClient. |
SYSLIB0015 | Warnung | DisablePrivateReflectionAttribute hat in .NET 6+ keine Auswirkungen. |
SYSLIB0016 | Warnung | Verwenden Sie die Graphics.GetContextInfo-Überladungen, die auch Argumente akzeptieren, um eine bessere Leistung bei weniger Zuordnungen zu erzielen. |
SYSLIB0017 | Warnung | Die Signierung mit starkem Namen wird nicht unterstützt und löst PlatformNotSupportedException aus. |
SYSLIB0018 | Warnung | Das auf Reflexion beschränkte Laden wird nicht unterstützt und löst PlatformNotSupportedException aus. |
SYSLIB0019 | Warnung | Die Member SystemConfigurationFile, GetRuntimeInterfaceAsIntPtr(Guid, Guid) und GetRuntimeInterfaceAsObject(Guid, Guid) von System.Runtime.InteropServices.RuntimeEnvironment werden nicht mehr unterstützt und lösen eine PlatformNotSupportedException aus. |
SYSLIB0020 | Warnung | JsonSerializerOptions.IgnoreNullValues ist veraltet. Um NULL-Werte beim Serialisieren zu ignorieren, legen Sie DefaultIgnoreCondition auf JsonIgnoreCondition.WhenWritingNull fest. |
SYSLIB0021 | Warnung | Abgeleitete kryptografische Typen sind veraltet. Verwenden Sie stattdessen die Create -Methode für den Basistyp. |
SYSLIB0022 | Warnung | Die Typen Rijndael und RijndaelManaged sind veraltet. Verwenden Sie stattdessen Aes. |
SYSLIB0023 | Warnung | RNGCryptoServiceProvider ist veraltet. Um eine Zufallszahl zu generieren, verwenden Sie stattdessen eine der statischen RandomNumberGenerator-Methoden. |
SYSLIB0024 | Warnung | Das Erstellen und Entladen von AppDomains wird nicht unterstützt und löst eine Ausnahme aus. |
SYSLIB0025 | Warnung | SuppressIldasmAttribute hat in .NET 6+ keine Auswirkungen. |
SYSLIB0026 | Warnung | X509Certificate und X509Certificate2 sind unveränderlich. Verwenden Sie den entsprechenden Konstruktor, um ein neues Zertifikat zu erstellen. |
SYSLIB0027 | Warnung | PublicKey.Key ist veraltet. Verwenden Sie eine geeignete Methode, um den öffentlichen Schlüssel abzurufen, z. B. GetRSAPublicKey(). |
SYSLIB0028 | Warnung | X509Certificate2.PrivateKey ist veraltet. Verwenden Sie eine geeignete Methode, um den öffentlichen Schlüssel abzurufen, z. B. RSACertificateExtensions.GetRSAPrivateKey(X509Certificate2), oder verwenden Sie die Methode X509Certificate2.CopyWithPrivateKey(ECDiffieHellman), um eine neue Instanz mit einem privaten Schlüssel zu erstellen. |
SYSLIB0029 | Warnung | ProduceLegacyHmacValues ist veraltet. Das Generieren von HMAC-Legacywerten wird nicht mehr unterstützt. |
SYSLIB0030 | Warnung | HMACSHA1 verwendet immer die Algorithmusimplementierung, die von der Plattform bereitgestellt wird. Verwenden Sie einen Konstruktor ohne den Parameter useManagedSha1 . |
SYSLIB0031 | Warnung | CryptoConfig.EncodeOID(String) ist veraltet. Verwenden Sie die in System.Formats.Asn1 bereitgestellte ASN.1-Funktionalität. |
SYSLIB0032 | Warnung | Die Wiederherstellung nach beschädigten Prozessstatus-Ausnahmen wird nicht unterstützt; HandleProcessCorruptedStateExceptionsAttribute wird ignoriert. |
SYSLIB0033 | Warnung | Rfc2898DeriveBytes.CryptDeriveKey(String, String, Int32, Byte[]) ist veraltet und wird nicht unterstützt. Verwenden Sie stattdessen PasswordDeriveBytes.CryptDeriveKey(String, String, Int32, Byte[]). |
SYSLIB0034 | Warnung | CmsSigner(CspParameters) ist veraltet. Verwenden Sie stattdessen einen alternativen Konstruktor. |
SYSLIB0035 | Warnung | SignerInfo.ComputeCounterSignature() ist veraltet. Verwenden Sie stattdessen die Überladung, die ein CmsSigner akzeptiert. |
SYSLIB0036 | Warnung | Regex.CompileToAssembly ist veraltet und wird nicht unterstützt. Verwenden Sie stattdessen RegexGeneratorAttribute mit dem Quellen-Generator für reguläre Ausdrücke. |
SYSLIB0037 | Warnung | AssemblyName-Member-HashAlgorithm, ProcessorArchitecture und VersionCompatibility sind veraltet und werden nicht unterstützt. |
SYSLIB0038 | Warnung | SerializationFormat.Binary ist veraltet und sollte nicht verwendet werden. |
SYSLIB0039 | Warnung | 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. |
SYSLIB0040 | Warnung | EncryptionPolicy.NoEncryption und EncryptionPolicy.AllowNoEncryption reduzieren die Sicherheit erheblich und sollten nicht im Produktionscode verwendet werden. |
SYSLIB0041 | Warnung | Standardhashalgorithmus und Iterationsanzahl in Rfc2898DeriveBytes-Konstruktoren sind veraltet und unsicher. Verwenden Sie einen Konstruktor, der den Hashalgorithmus und die Anzahl der Iterationen akzeptiert. |
SYSLIB0042 | Warnung | 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. |
SYSLIB0043 | Warnung | ECDiffieHellmanPublicKey.ToByteArray() und der zugeordnete Konstruktor verfügen nicht über eine konsistente und interoperable Implementierung auf allen Plattformen. Verwenden Sie stattdessen ECDiffieHellmanPublicKey.ExportSubjectPublicKeyInfo(). |
SYSLIB0044 | Warnung | AssemblyName.CodeBase und AssemblyName.EscapedCodeBase sind veraltet. Die Verwendung zum Laden einer Assembly wird nicht unterstützt. |
SYSLIB0045 | Warnung | Kryptografische Factorymethoden, die einen Algorithmusnamen akzeptieren, sind veraltet. Verwenden Sie stattdessen die parameterlose Factorymethode Create für den Algorithmustyp. |
SYSLIB0046 | Warnung | Die ControlledExecution.Run(Action, CancellationToken)-Methode kann den Prozess beschädigen und sollte nicht im Produktionscode verwendet werden. |
SYSLIB0047 | Warnung | XmlSecureResolver ist veraltet. Verwenden Sie stattdessen XmlResolver.ThrowingResolver , wenn Sie die Auflösung externer XML-Entitäten verbieten möchten. |
SYSLIB0048 | Warnung | RSA.EncryptValue(Byte[]) und RSA.DecryptValue(Byte[]) sind veraltet. Verwenden Sie stattdessen RSA.Encrypt und RSA.Decrypt. |
SYSLIB0049 | Warnung | JsonSerializerOptions.AddContext ist veraltet. Um einen JsonSerializerContext zu registrieren, verwenden Sie die TypeInfoResolver- oder die TypeInfoResolverChain-Eigenschaft. |
SYSLIB0050 | Warnung | Die auf einen Formatierer basierende Serialisierung ist veraltet und sollte nicht verwendet werden. |
SYSLIB0051 | Warnung | APIs, die die veraltete formatiererbasierte Serialisierung unterstützen, sind veraltet. Sie sollten nicht durch Anwendungscode aufgerufen oder erweitert werden. |
SYSLIB0052 | Warnung | APIs, die veraltete Mechanismen für die Regex-Erweiterbarkeit unterstützen, sind veraltet. |
SYSLIB0053 | Warnung | AesGcm muss die für Ver- und Entschlüsselung erforderliche Taggröße angeben. Verwenden Sie einen Konstruktor, der die Taggröße akzeptiert. |
SYSLIB0054 | Warnung | Thread.VolatileRead und Thread.VolatileWrite sind veraltet. Verwenden Sie stattdessen Volatile.Read oder Volatile.Write. |
SYSLIB0055 | Warnung | AdvSimd.ShiftRightLogicalRoundedNarrowingSaturate* -Methoden mit signierten Parametern sind veraltet. Verwenden Sie stattdessen die nicht signierten Überladungen. |
SYSLIB0056 | Warnung | Assembly.LoadFrom mit einer benutzerdefinierten AssemblyHashAlgorithm ist veraltet. Verwenden Sie Überladungen ohne AssemblyHashAlgorithm . |
SYSLIB0057 | Warnung | Die X509Certificate2 - und X509Certificate -Konstruktoren für Binärdateien und Dateiinhalte sind veraltet. |
Unterdrücken von Warnungen
Es wird empfohlen, nach Möglichkeit eine verfügbare Problemumgehung zu verwenden. Wenn Sie den Code nicht ändern können, können Sie Warnungen über eine #pragma
-Anweisung oder eine <NoWarn>
-Projekteinstellung unterdrücken. Wenn Sie die veralteten APIs verwenden müssen und die SYSLIB0XXX
-Diagnose keine Fehler anzeigt, können Sie die Warnung im Code oder in der Projektdatei unterdrücken.
So unterdrücken Sie die Warnungen im Code:
// Disable the warning.
#pragma warning disable SYSLIB0001
// Code that uses obsolete API.
//...
// Re-enable the warning.
#pragma warning restore SYSLIB0001
So unterdrücken Sie die Warnungen in einer Projektdatei:
<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>
Hinweis
Wenn Sie eine Warnung auf diese Weise unterdrücken, werden nur von Ihnen festgelegte Veraltungswarnungen deaktiviert. Andere Warnungen, einschließlich anderer Veraltungswarnungen, mit unterschiedlichen Diagnose-IDs bleiben weiterhin aktiviert.