Dela via


Föråldrade funktioner i .NET 5+

Från och med .NET 5 använder vissa API:er som nyligen har markerats som föråldrade två nya egenskaper på ObsoleteAttribute.

  • Egenskapen ObsoleteAttribute.DiagnosticId instruerar kompilatorn att generera byggvarningar med hjälp av ett anpassat diagnostik-ID. Med det anpassade ID:t kan obsoletionsvarningar ignoreras specifikt och separat från varandra. När det gäller .NET 5+ obsoletioner är SYSLIB0XXXformatet för det anpassade diagnostik-ID:t .

  • Egenskapen ObsoleteAttribute.UrlFormat instruerar kompilatorn att inkludera en URL-länk för att lära sig mer om obsoletionen.

Om du får kompileringsvarningar eller -fel på grund av användning av ett föråldrat API följer du den specifika vägledningen för diagnostik-ID:t som anges i avsnittet Referens . Varningar eller fel för dessa obsoletioner kan inte ignoreras med hjälp av standarddiagnostik-ID (CS0618) för föråldrade typer eller medlemmar. Använd anpassade SYSLIB0XXX diagnostik-ID-värden i stället. Mer information finns i Utelämna varningar.

Referens

Följande tabell innehåller ett index för SYSLIB0XXX obsoletionerna i .NET 5+.

Diagnostik-ID Varning eller fel beskrivning
SYSLIB0001 Varning UTF-7-kodningen är osäker och bör inte användas. Överväg att använda UTF-8 i stället.
SYSLIB0002 Fel PrincipalPermissionAttribute respekteras inte av körningen och får inte användas.
SYSLIB0003 Varning Kodåtkomstsäkerhet (CAS) stöds inte eller respekteras inte av körningen.
SYSLIB0004 Varning Funktionen för begränsad körningsregion (CER) stöds inte.
SYSLIB0005 Varning Den globala sammansättningscache (GAC) stöds inte.
SYSLIB0006 Varning Thread.Abort() stöds inte och genererar PlatformNotSupportedException.
SYSLIB0007 Varning Standardimplementeringen av den här kryptografialgoritmen stöds inte.
SYSLIB0008 Varning API:et CreatePdbGenerator() stöds inte och genererar PlatformNotSupportedException.
SYSLIB0009 Varning AuthenticationManager stöds inte. Metoderna no-op eller genererar PlatformNotSupportedException.
SYSLIB0010 Varning Vissa fjärrkommunikations-API:er stöds inte och genererar PlatformNotSupportedExceptioninte .
SYSLIB0011 Varning BinaryFormatter serialisering är föråldrad och bör inte användas.
SYSLIB0012 Varning Assembly.CodeBase och Assembly.EscapedCodeBase ingår endast för .NET Framework-kompatibilitet. Använd Assembly.Location i stället.
SYSLIB0013 Varning Uri.EscapeUriString(String) kan skada URI-strängen i vissa fall. Överväg att använda Uri.EscapeDataString(String) för frågesträngskomponenter i stället.
SYSLIB0014 Varning WebRequest, HttpWebRequest, ServicePointoch WebClient är föråldrade. Använd HttpClient i stället.
SYSLIB0015 Varning DisablePrivateReflectionAttribute har ingen effekt i .NET 6+.
SYSLIB0016 Varning Använd de Graphics.GetContextInfo överlagringar som accepterar argument för bättre prestanda och färre allokeringar.
SYSLIB0017 Varning Stark namnsignering stöds inte och genererar PlatformNotSupportedException.
SYSLIB0018 Varning Endast reflektionsinläsning stöds inte och genererar PlatformNotSupportedException.
SYSLIB0019 Varning Medlemmarna System.Runtime.InteropServices.RuntimeEnvironmentSystemConfigurationFile, GetRuntimeInterfaceAsIntPtr(Guid, Guid)och GetRuntimeInterfaceAsObject(Guid, Guid) stöds inte längre och genererar PlatformNotSupportedException.
SYSLIB0020 Varning JsonSerializerOptions.IgnoreNullValues är föråldrad. Om du vill ignorera null-värden vid serialisering anger du DefaultIgnoreCondition till JsonIgnoreCondition.WhenWritingNull.
SYSLIB0021 Varning Härledda kryptografiska typer är föråldrade. Create Använd metoden på bastypen i stället.
SYSLIB0022 Varning Typerna Rijndael och RijndaelManaged är föråldrade. Använd Aes i stället.
SYSLIB0023 Varning RNGCryptoServiceProvider är föråldrad. Om du vill generera ett slumpmässigt tal använder du en av de RandomNumberGenerator statiska metoderna i stället.
SYSLIB0024 Varning Det går inte att skapa och ta bort AppDomains och genererar ett undantag.
SYSLIB0025 Varning SuppressIldasmAttribute har ingen effekt i .NET 6+.
SYSLIB0026 Varning X509Certificate och X509Certificate2 är oföränderliga. Använd lämplig konstruktor för att skapa ett nytt certifikat.
SYSLIB0027 Varning PublicKey.Key är föråldrad. Använd lämplig metod för att hämta den offentliga nyckeln, till exempel GetRSAPublicKey().
SYSLIB0028 Varning X509Certificate2.PrivateKey är föråldrad. Använd lämplig metod för att hämta den privata nyckeln, till exempel RSACertificateExtensions.GetRSAPrivateKey(X509Certificate2), eller använd X509Certificate2.CopyWithPrivateKey(ECDiffieHellman) metoden för att skapa en ny instans med en privat nyckel.
SYSLIB0029 Varning ProduceLegacyHmacValues är föråldrad. Det går inte längre att skapa äldre HMAC-värden.
SYSLIB0030 Varning HMACSHA1 använder alltid den algoritmimplementering som tillhandahålls av plattformen. Använd en konstruktor utan parametern useManagedSha1 .
SYSLIB0031 Varning CryptoConfig.EncodeOID(String) är föråldrad. Använd ASN.1-funktionerna i System.Formats.Asn1.
SYSLIB0032 Varning Återställning från skadade processtillståndsfel stöds inte. HandleProcessCorruptedStateExceptionsAttribute ignoreras.
SYSLIB0033 Varning Rfc2898DeriveBytes.CryptDeriveKey(String, String, Int32, Byte[]) är föråldrad och stöds inte. Använd PasswordDeriveBytes.CryptDeriveKey(String, String, Int32, Byte[]) i stället.
SYSLIB0034 Varning CmsSigner(CspParameters) är föråldrad. Använd en alternativ konstruktor i stället.
SYSLIB0035 Varning SignerInfo.ComputeCounterSignature() är föråldrad. Använd den överlagring som accepterar en CmsSigner i stället.
SYSLIB0036 Varning Regex.CompileToAssembly är föråldrad och stöds inte. Använd RegexGeneratorAttribute med källgeneratorn för reguljära uttryck i stället.
SYSLIB0037 Varning AssemblyName medlemmar HashAlgorithm, ProcessorArchitectureoch VersionCompatibility är föråldrade och stöds inte.
SYSLIB0038 Varning SerializationFormat.Binary är föråldrad och bör inte användas.
SYSLIB0039 Varning TLS-versionerna 1.0 och 1.1 har kända säkerhetsrisker och rekommenderas inte. Använd en nyare TLS-version i stället, eller använd SslProtocols.None för att skjuta upp till OS-standardvärden.
SYSLIB0040 Varning EncryptionPolicy.NoEncryption och EncryptionPolicy.AllowNoEncryption avsevärt minska säkerheten och bör inte användas i produktionskoden.
SYSLIB0041 Varning Standard-hash-algoritmen och iterationsantalet i Rfc2898DeriveBytes konstruktorer är inaktuella och osäkra. Använd en konstruktor som accepterar hash-algoritmen och antalet iterationer.
SYSLIB0042 Varning ToXmlString och FromXmlString har ingen implementering för elliptiska kurvkryptografityper (ECC) och är föråldrade. Använd ett standardformat för import och export, till exempel ExportSubjectPublicKeyInfo eller ImportSubjectPublicKeyInfo för offentliga nycklar, eller ExportPkcs8PrivateKeyImportPkcs8PrivateKey för privata nycklar.
SYSLIB0043 Varning ECDiffieHellmanPublicKey.ToByteArray() och den associerade konstruktorn har inte någon konsekvent och driftskompatibel implementering på alla plattformar. Använd ECDiffieHellmanPublicKey.ExportSubjectPublicKeyInfo() i stället.
SYSLIB0044 Varning AssemblyName.CodeBase och AssemblyName.EscapedCodeBase är föråldrade. Det går inte att använda dem för att läsa in en sammansättning.
SYSLIB0045 Varning Kryptografiska fabriksmetoder som accepterar ett algoritmnamn är föråldrade. Använd metoden parameterlös Create fabrik på algoritmtypen i stället.
SYSLIB0046 Varning Metoden ControlledExecution.Run(Action, CancellationToken) kan skada processen och bör inte användas i produktionskoden.
SYSLIB0047 Varning XmlSecureResolver är föråldrad. Använd XmlResolver.ThrowingResolver i stället när du försöker förbjuda xml-extern entitetsmatchning.
SYSLIB0048 Varning RSA.EncryptValue(Byte[]) och RSA.DecryptValue(Byte[]) är föråldrade. Använd RSA.Encrypt och RSA.Decrypt i stället.
SYSLIB0049 Varning JsonSerializerOptions.AddContext är föråldrad. Om du vill registrera en JsonSerializerContext använder du antingen egenskapen TypeInfoResolver eller TypeInfoResolverChain.
SYSLIB0050 Varning Formateringsbaserad serialisering är föråldrad och bör inte användas.
SYSLIB0051 Varning API:er som stöder föråldrad formateringsbaserad serialisering är föråldrade. De bör inte anropas eller utökas av programkod.
SYSLIB0052 Varning API:er som stöder föråldrade mekanismer för Regex-utökningsbarhet är föråldrade.
SYSLIB0053 Varning AesGcm ska ange den nödvändiga taggstorleken för kryptering och dekryptering. Använd en konstruktor som accepterar taggstorleken.
SYSLIB0054 Varning Thread.VolatileRead och Thread.VolatileWrite är föråldrade. Använd Volatile.Read eller Volatile.Write i stället.
SYSLIB0055 Varning AdvSimd.ShiftRightLogicalRoundedNarrowingSaturate* metoder med signerade parametrar är föråldrade. Använd de osignerade överlagringarna i stället.
SYSLIB0056 Varning Assembly.LoadFrom med en anpassad AssemblyHashAlgorithm är föråldrad. Använd överlagringar utan .AssemblyHashAlgorithm
SYSLIB0057 Varning X509Certificate2 och X509Certificate konstruktorer för binärt och filinnehåll är föråldrade.
SYSLIB0058 Varning Egenskaperna KeyExchangeAlgorithm, KeyExchangeStrength, CipherAlgorithm, CipherAlgorithmStrength, HashAlgorithmoch HashStrength för SslStream är föråldrade. Använd NegotiatedCipherSuite i stället.
SYSLIB0059 Varning SystemEvents.EventsThreadShutdown återanrop körs inte innan processen avslutas. Använd AppDomain.ProcessExit i stället.

Ignorera varningar

Vi rekommenderar att du använder en tillgänglig lösning när det är möjligt. Men om du inte kan ändra koden kan du ignorera varningar via ett #pragma direktiv eller en <NoWarn> projektinställning. Om du måste använda föråldrade API:er och diagnostiken SYSLIB0XXX inte visas som ett fel kan du ignorera varningen i koden eller i projektfilen.

Så här utelämnar du varningarna i koden:

// Disable the warning.
#pragma warning disable SYSLIB0001

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

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

Så här utelämnar du varningarna i en projektfil:

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

Kommentar

Om du utelämnar varningar på det här sättet inaktiveras bara de obsoletionsvarningar som du anger. Det inaktiverar inte några andra varningar, inklusive obsoletionsvarningar med olika diagnostik-ID:n.

Se även