Delen via


Verouderde functies in .NET 5+

Vanaf .NET 5 maken sommige API's die zojuist zijn gemarkeerd als verouderd, gebruik van twee nieuwe eigenschappen op ObsoleteAttribute.

  • De ObsoleteAttribute.DiagnosticId eigenschap vertelt de compiler om buildwaarschuwingen te genereren met behulp van een aangepaste diagnostische id. Met de aangepaste id kan een waarschuwing voor verdoezeling specifiek en afzonderlijk van elkaar worden onderdrukt. In het geval van de .NET 5+ obsoletions is de indeling voor de aangepaste diagnostische id SYSLIB0XXX.

  • De ObsoleteAttribute.UrlFormat eigenschap vertelt de compiler om een URL-koppeling op te nemen voor meer informatie over de onzool.

Als er buildwaarschuwingen of -fouten optreden vanwege het gebruik van een verouderde API, volgt u de specifieke richtlijnen voor de diagnostische id die wordt vermeld in de sectie Naslaginformatie . Waarschuwingen of fouten voor deze verdoezelingen kunnen niet worden onderdrukt met behulp van de standaarddiagnose-id (CS0618) voor verouderde typen of leden. Gebruik in plaats daarvan de aangepaste diagnostische SYSLIB0XXX id-waarden. Zie Waarschuwingen onderdrukken voor meer informatie.

Verwijzing

De volgende tabel bevat een index voor de SYSLIB0XXX obsoletions in .NET 5+.

Diagnostische id Waarschuwing of fout Beschrijving
SYSLIB0001 Waarschuwing De UTF-7-codering is onveilig en mag niet worden gebruikt. Overweeg in plaats daarvan UTF-8 te gebruiken.
SYSLIB0002 Error PrincipalPermissionAttribute wordt niet gehonoreerd door de runtime en mag niet worden gebruikt.
SYSLIB0003 Waarschuwing Cas (Code Access Security) wordt niet ondersteund of gehonoreerd door de runtime.
SYSLIB0004 Waarschuwing De functie voor de beperkte uitvoeringsregio (CER) wordt niet ondersteund.
SYSLIB0005 Waarschuwing De algemene assemblycache (GAC) wordt niet ondersteund.
SYSLIB0006 Waarschuwing Thread.Abort() wordt niet ondersteund en gooit PlatformNotSupportedException.
SYSLIB0007 Waarschuwing De standaard implementatie van dit cryptografie-algoritme wordt niet ondersteund.
SYSLIB0008 Waarschuwing De CreatePdbGenerator() API wordt niet ondersteund en genereert PlatformNotSupportedException.
SYSLIB0009 Waarschuwing AuthenticationManager wordt niet ondersteund. Methoden zullen geen op- of gooien PlatformNotSupportedException.
SYSLIB0010 Waarschuwing Sommige externe API's worden niet ondersteund en gooien PlatformNotSupportedException.
SYSLIB0011 Waarschuwing BinaryFormatter serialisatie is verouderd en mag niet worden gebruikt.
SYSLIB0012 Waarschuwing Assembly.CodeBase en Assembly.EscapedCodeBase zijn alleen opgenomen voor .NET Framework-compatibiliteit. Gebruik in plaats daarvan Assembly.Location.
SYSLIB0013 Waarschuwing Uri.EscapeUriString(String) kan de URI-tekenreeks in sommige gevallen beschadigen. Overweeg in plaats daarvan queryreeksonderdelen te gebruiken Uri.EscapeDataString(String) .
SYSLIB0014 Waarschuwing WebRequest, , HttpWebRequestServicePointen WebClient zijn verouderd. Gebruik in plaats daarvan HttpClient.
SYSLIB0015 Waarschuwing DisablePrivateReflectionAttribute heeft geen effect in .NET 6+.
SYSLIB0016 Waarschuwing Gebruik de Graphics.GetContextInfo overbelastingen die argumenten accepteren voor betere prestaties en minder toewijzingen.
SYSLIB0017 Waarschuwing Ondertekening met sterke naam wordt niet ondersteund en genereert PlatformNotSupportedException.
SYSLIB0018 Waarschuwing Laden met alleen weerspiegeling wordt niet ondersteund en werpt PlatformNotSupportedException.
SYSLIB0019 Waarschuwing De System.Runtime.InteropServices.RuntimeEnvironment leden SystemConfigurationFile, GetRuntimeInterfaceAsIntPtr(Guid, Guid)en GetRuntimeInterfaceAsObject(Guid, Guid) worden niet meer ondersteund en gooien PlatformNotSupportedException.
SYSLIB0020 Waarschuwing JsonSerializerOptions.IgnoreNullValues is verouderd. Als u null-waarden wilt negeren bij het serialiseren, stelt u deze in DefaultIgnoreCondition op JsonIgnoreCondition.WhenWritingNull.
SYSLIB0021 Waarschuwing Afgeleide cryptografische typen zijn verouderd. Gebruik in plaats daarvan de Create methode op het basistype.
SYSLIB0022 Waarschuwing De Rijndael en RijndaelManaged typen zijn verouderd. Gebruik in plaats daarvan Aes.
SYSLIB0023 Waarschuwing RNGCryptoServiceProvider is verouderd. Als u een willekeurig getal wilt genereren, gebruikt u in plaats daarvan een van de RandomNumberGenerator statische methoden.
SYSLIB0024 Waarschuwing Het maken en lossen van AppDomains wordt niet ondersteund en genereert een uitzondering.
SYSLIB0025 Waarschuwing SuppressIldasmAttribute heeft geen effect in .NET 6+.
SYSLIB0026 Waarschuwing X509Certificate en X509Certificate2 onveranderbaar zijn. Gebruik de juiste constructor om een nieuw certificaat te maken.
SYSLIB0027 Waarschuwing PublicKey.Key is verouderd. Gebruik de juiste methode om de openbare sleutel op te halen, zoals GetRSAPublicKey().
SYSLIB0028 Waarschuwing X509Certificate2.PrivateKey is verouderd. Gebruik de juiste methode om de persoonlijke sleutel op te halen, zoals RSACertificateExtensions.GetRSAPrivateKey(X509Certificate2)of gebruik de X509Certificate2.CopyWithPrivateKey(ECDiffieHellman) methode om een nieuw exemplaar met een persoonlijke sleutel te maken.
SYSLIB0029 Waarschuwing ProduceLegacyHmacValues is verouderd. Het produceren van verouderde HMAC-waarden wordt niet meer ondersteund.
SYSLIB0030 Waarschuwing HMACSHA1 maakt altijd gebruik van de algoritme-implementatie die door het platform wordt geleverd. Gebruik een constructor zonder de useManagedSha1 parameter.
SYSLIB0031 Waarschuwing CryptoConfig.EncodeOID(String) is verouderd. Gebruik de asn.1-functionaliteit die beschikbaar is in System.Formats.Asn1.
SYSLIB0032 Waarschuwing Herstel van beschadigde processtatusuitzondering wordt niet ondersteund; HandleProcessCorruptedStateExceptionsAttribute wordt genegeerd.
SYSLIB0033 Waarschuwing Rfc2898DeriveBytes.CryptDeriveKey(String, String, Int32, Byte[]) is verouderd en wordt niet ondersteund. Gebruik in plaats daarvan PasswordDeriveBytes.CryptDeriveKey(String, String, Int32, Byte[]).
SYSLIB0034 Waarschuwing CmsSigner(CspParameters) is verouderd. Gebruik in plaats daarvan een alternatieve constructor.
SYSLIB0035 Waarschuwing SignerInfo.ComputeCounterSignature() is verouderd. Gebruik de overbelasting die een CmsSigner in plaats daarvan accepteert.
SYSLIB0036 Waarschuwing Regex.CompileToAssembly is verouderd en wordt niet ondersteund. Gebruik RegexGeneratorAttribute in plaats daarvan met de brongenerator voor reguliere expressies.
SYSLIB0037 Waarschuwing AssemblyName leden HashAlgorithm, ProcessorArchitectureen VersionCompatibility zijn verouderd en worden niet ondersteund.
SYSLIB0038 Waarschuwing SerializationFormat.Binary is verouderd en mag niet worden gebruikt.
SYSLIB0039 Waarschuwing TLS-versies 1.0 en 1.1 hebben bekende beveiligingsproblemen en worden niet aanbevolen. Gebruik in plaats daarvan een nieuwere TLS-versie of gebruik SslProtocols.None deze om de standaardinstellingen van het besturingssysteem uit te stellen.
SYSLIB0040 Waarschuwing EncryptionPolicy.NoEncryption en EncryptionPolicy.AllowNoEncryption vermindert de beveiliging aanzienlijk en mag niet worden gebruikt in productiecode.
SYSLIB0041 Waarschuwing Het standaard-hash-algoritme en iteratieaantallen in Rfc2898DeriveBytes constructors zijn verouderd en onveilig. Gebruik een constructor die het hash-algoritme en het aantal iteraties accepteert.
SYSLIB0042 Waarschuwing ToXmlString en FromXmlString geen implementatie voor ECC-typen (elliptische curvecryptografie) hebben en verouderd zijn. Gebruik een standaardindeling voor importeren en exporteren, zoals ExportSubjectPublicKeyInfo of ImportSubjectPublicKeyInfo voor openbare sleutels en ExportPkcs8PrivateKey of ImportPkcs8PrivateKey voor persoonlijke sleutels.
SYSLIB0043 Waarschuwing ECDiffieHellmanPublicKey.ToByteArray() en de bijbehorende constructor heeft geen consistente en interoperabele implementatie op alle platforms. Gebruik in plaats daarvan ECDiffieHellmanPublicKey.ExportSubjectPublicKeyInfo().
SYSLIB0044 Waarschuwing AssemblyName.CodeBase en AssemblyName.EscapedCodeBase zijn verouderd. Het gebruik ervan voor het laden van een assembly wordt niet ondersteund.
SYSLIB0045 Waarschuwing Cryptografische factorymethoden die een algoritmenaam accepteren, zijn verouderd. Gebruik in plaats daarvan de parameterloze Create factorymethode voor het algoritmetype.
SYSLIB0046 Waarschuwing De ControlledExecution.Run(Action, CancellationToken) methode kan het proces beschadigen en mag niet worden gebruikt in productiecode.
SYSLIB0047 Waarschuwing XmlSecureResolver is verouderd. Gebruik XmlResolver.ThrowingResolver in plaats daarvan wanneer u probeert de omzetting van externe XML-entiteiten te verbieden.
SYSLIB0048 Waarschuwing RSA.EncryptValue(Byte[]) en RSA.DecryptValue(Byte[]) zijn verouderd. Gebruik RSA.Encrypt en RSA.Decrypt in plaats daarvan.
SYSLIB0049 Waarschuwing JsonSerializerOptions.AddContext is verouderd. Als u een JsonSerializerContext wilt registreren, gebruikt u de eigenschap TypeInfoResolver of TypeInfoResolverChain.
SYSLIB0050 Waarschuwing Serialisatie op basis van formatter is verouderd en mag niet worden gebruikt.
SYSLIB0051 Waarschuwing API's die verouderde serialisatie op basis van formatter ondersteunen, zijn verouderd. Ze mogen niet worden aangeroepen of uitgebreid met toepassingscode.
SYSLIB0052 Waarschuwing API's die verouderde mechanismen voor regex-uitbreidbaarheid ondersteunen, zijn verouderd.
SYSLIB0053 Waarschuwing AesGcm moet de vereiste taggrootte voor versleuteling en ontsleuteling aangeven. Gebruik een constructor die de taggrootte accepteert.
SYSLIB0054 Waarschuwing Thread.VolatileRead en Thread.VolatileWrite zijn verouderd. Gebruik Volatile.Read of Volatile.Write in plaats daarvan.
SYSLIB0055 Waarschuwing AdvSimd.ShiftRightLogicalRoundedNarrowingSaturate* methoden met ondertekende parameters zijn verouderd. Gebruik in plaats daarvan de niet-ondertekende overbelastingen.
SYSLIB0056 Waarschuwing Assembly.LoadFrom met een aangepaste AssemblyHashAlgorithm is verouderd. Gebruik overbelastingen zonder een AssemblyHashAlgorithm.
SYSLIB0057 Waarschuwing X509Certificate2 en X509Certificate constructors voor binaire en bestandsinhoud zijn verouderd.

Waarschuwingen onderdrukken

Het is raadzaam om waar mogelijk een beschikbare tijdelijke oplossing te gebruiken. Als u uw code echter niet kunt wijzigen, kunt u waarschuwingen onderdrukken via een #pragma instructie of een <NoWarn> projectinstelling. Als u de verouderde API's moet gebruiken en de SYSLIB0XXX diagnose niet als een fout wordt weergegeven, kunt u de waarschuwing in code of in het projectbestand onderdrukken.

De waarschuwingen in code onderdrukken:

// Disable the warning.
#pragma warning disable SYSLIB0001

// Code that uses obsolete API.
//...

// Re-enable the warning.
#pragma warning restore SYSLIB0001

De waarschuwingen in een projectbestand onderdrukken:

<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>

Notitie

Als u waarschuwingen op deze manier onderdrukt, worden alleen de inlegwaarschuwingen uitgeschakeld die u opgeeft. Er worden geen andere waarschuwingen uitgeschakeld, waaronder obsoletion-waarschuwingen met verschillende diagnostische id's.

Zie ook