Freigeben über


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.

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.

Siehe auch