Sdílet prostřednictvím


Zastaralé funkce v .NET 5+

Počínaje rozhraním .NET 5 některé rozhraní API, která jsou nově označena jako zastaralá, využívají dvě nové vlastnosti .ObsoleteAttribute

  • Vlastnost ObsoleteAttribute.DiagnosticId kompilátoru říká, aby generoval upozornění sestavení pomocí vlastního ID diagnostiky. Vlastní ID umožňuje potlačovat upozornění na obsoletion konkrétně a odděleně od sebe. V případě rozhraní .NET 5+ obsoletions je SYSLIB0XXXformát vlastního ID diagnostiky .

  • Vlastnost ObsoleteAttribute.UrlFormat říká kompilátoru, aby zahrnoval odkaz na adresu URL, aby se dozvěděl více o obsoletion.

Pokud narazíte na upozornění nebo chyby sestavení z důvodu použití zastaralého rozhraní API, postupujte podle konkrétních pokynů uvedených pro ID diagnostiky uvedené v části Reference . Upozornění nebo chyby pro tyto obsoletions nelze potlačit pomocí standardního ID diagnostiky (CS0618) pro zastaralé typy nebo členy. Místo toho použijte vlastní SYSLIB0XXX hodnoty ID diagnostiky. Další informace naleznete v tématu Potlačení upozornění.

Reference

Následující tabulka obsahuje index SYSLIB0XXX obsoletions v .NET 5 nebo novější.

ID diagnostiky Upozornění nebo chyba Popis
SYSLIB0001 Upozorňující Kódování UTF-7 je nezabezpečené a nemělo by se používat. Zvažte místo toho použití UTF-8.
SYSLIB0002 Chyba PrincipalPermissionAttribute modul runtime není dodržen a nesmí se používat.
SYSLIB0003 Upozorňující Modul runtime nepodporuje ani nepodporuje zabezpečení přístupu kódu (CAS).
SYSLIB0004 Upozorňující Funkce oblasti omezeného spuštění (CER) není podporovaná.
SYSLIB0005 Upozorňující Globální mezipaměť sestavení (GAC) není podporována.
SYSLIB0006 Upozorňující Thread.Abort() není podporován a vyvolá PlatformNotSupportedException.
SYSLIB0007 Upozorňující Výchozí implementace tohoto kryptografického algoritmu není podporována.
SYSLIB0008 Upozorňující Rozhraní CreatePdbGenerator() API není podporováno a vyvolává PlatformNotSupportedException.
SYSLIB0009 Upozorňující AuthenticationManager není podporováno. Metody nebudou žádné operace nebo vyvolání PlatformNotSupportedException.
SYSLIB0010 Upozorňující Některá rozhraní API vzdálené komunikace nejsou podporována a vyvolání PlatformNotSupportedException.
SYSLIB0011 Upozorňující BinaryFormatter serializace je zastaralá a neměla by být použita.
SYSLIB0012 Upozorňující Assembly.CodeBase a Assembly.EscapedCodeBase jsou zahrnuty pouze pro kompatibilitu rozhraní .NET Framework. Místo toho použijte Assembly.Location.
SYSLIB0013 Upozorňující Uri.EscapeUriString(String) může v některých případech poškodit řetězec identifikátoru URI. Místo toho zvažte použití Uri.EscapeDataString(String) pro komponenty řetězce dotazu.
SYSLIB0014 Upozorňující WebRequest, HttpWebRequesta ServicePointWebClient jsou zastaralé. Místo toho použijte HttpClient.
SYSLIB0015 Upozorňující DisablePrivateReflectionAttribute nemá žádný vliv na .NET 6 nebo novější.
SYSLIB0016 Upozorňující Graphics.GetContextInfo Použijte přetížení, která přijímají argumenty pro lepší výkon a méně přidělení.
SYSLIB0017 Upozorňující Podepisování silného názvu není podporováno a vyvolá PlatformNotSupportedExceptionse .
SYSLIB0018 Upozorňující Načítání pouze reflexe není podporováno a vyvolá PlatformNotSupportedException.
SYSLIB0019 Upozorňující Členové SystemConfigurationFileSystem.Runtime.InteropServices.RuntimeEnvironment , GetRuntimeInterfaceAsIntPtr(Guid, Guid)a GetRuntimeInterfaceAsObject(Guid, Guid) již nejsou podporovány a vyvolání PlatformNotSupportedException.
SYSLIB0020 Upozorňující JsonSerializerOptions.IgnoreNullValues je zastaralý. Pokud chcete při serializaci ignorovat hodnoty null, nastavte DefaultIgnoreCondition hodnotu JsonIgnoreCondition.WhenWritingNull.
SYSLIB0021 Upozorňující Odvozené kryptografické typy jsou zastaralé. Místo toho použijte metodu Create základního typu.
SYSLIB0022 Upozorňující Typy Rijndael jsou RijndaelManaged zastaralé. Místo toho použijte Aes.
SYSLIB0023 Upozorňující RNGCryptoServiceProvider je zastaralý. Pokud chcete vygenerovat náhodné číslo, použijte místo toho jednu ze statických RandomNumberGenerator metod.
SYSLIB0024 Upozorňující Vytváření a uvolňování domén AppDomains není podporováno a vyvolá výjimku.
SYSLIB0025 Upozorňující SuppressIldasmAttribute nemá žádný vliv na .NET 6 nebo novější.
SYSLIB0026 Upozorňující X509Certificate a X509Certificate2 jsou neměnné. Pomocí příslušného konstruktoru vytvořte nový certifikát.
SYSLIB0027 Upozorňující PublicKey.Key je zastaralý. Pomocí příslušné metody získejte veřejný klíč, například GetRSAPublicKey().
SYSLIB0028 Upozorňující X509Certificate2.PrivateKey je zastaralý. Použijte příslušnou metodu k získání privátního klíče, například RSACertificateExtensions.GetRSAPrivateKey(X509Certificate2), nebo použijte metodu X509Certificate2.CopyWithPrivateKey(ECDiffieHellman) k vytvoření nové instance s privátním klíčem.
SYSLIB0029 Upozorňující ProduceLegacyHmacValues je zastaralý. Vytváření starších hodnot HMAC se už nepodporuje.
SYSLIB0030 Upozorňující HMACSHA1 vždy používá implementaci algoritmu poskytovanou platformou. Použijte konstruktor bez parametru useManagedSha1 .
SYSLIB0031 Upozorňující CryptoConfig.EncodeOID(String) je zastaralý. Použijte funkci ASN.1, která je součástí System.Formats.Asn1.
SYSLIB0032 Upozorňující Obnovení z výjimek stavu poškozeného procesu není podporováno; HandleProcessCorruptedStateExceptionsAttribute se ignoruje.
SYSLIB0033 Upozorňující Rfc2898DeriveBytes.CryptDeriveKey(String, String, Int32, Byte[]) je zastaralý a nepodporuje se. Místo toho použijte PasswordDeriveBytes.CryptDeriveKey(String, String, Int32, Byte[]).
SYSLIB0034 Upozorňující CmsSigner(CspParameters) je zastaralý. Místo toho použijte alternativní konstruktor.
SYSLIB0035 Upozorňující SignerInfo.ComputeCounterSignature() je zastaralý. Použijte přetížení, které místo toho přijme CmsSigner .
SYSLIB0036 Upozorňující Regex.CompileToAssembly je zastaralý a nepodporuje se. Použijte RegexGeneratorAttribute místo toho generátor zdroje regulárních výrazů.
SYSLIB0037 Upozorňující AssemblyNameProcessorArchitecture, HashAlgorithma VersionCompatibility jsou zastaralé a nejsou podporovány.
SYSLIB0038 Upozorňující SerializationFormat.Binary je zastaralý a neměl by se používat.
SYSLIB0039 Upozorňující Protokol TLS verze 1.0 a 1.1 obsahují známá ohrožení zabezpečení a nedoporučuje se. Místo toho použijte novější verzi protokolu TLS nebo použijte SslProtocols.None k odložení výchozích hodnot operačního systému.
SYSLIB0040 Upozorňující EncryptionPolicy.NoEncryption a EncryptionPolicy.AllowNoEncryption výrazně snížit zabezpečení a nemělo by se používat v produkčním kódu.
SYSLIB0041 Upozorňující Výchozí algoritmus hash a počty iterací v Rfc2898DeriveBytes konstruktorech jsou zastaralé a nezabezpečené. Použijte konstruktor, který přijímá algoritmus hash a počet iterací.
SYSLIB0042 Upozorňující ToXmlString a FromXmlString nemají žádnou implementaci pro typy kryptografie se třemi tečkami (ECC) a jsou zastaralé. Použijte standardní formát importu a exportu, jako ExportSubjectPublicKeyInfo je veřejný ImportSubjectPublicKeyInfo klíč nebo ExportPkcs8PrivateKey ImportPkcs8PrivateKey privátní klíče.
SYSLIB0043 Upozorňující ECDiffieHellmanPublicKey.ToByteArray() a přidružený konstruktor nemá konzistentní a interoperabilní implementaci na všech platformách. Místo toho použijte ECDiffieHellmanPublicKey.ExportSubjectPublicKeyInfo().
SYSLIB0044 Upozorňující AssemblyName.CodeBase a AssemblyName.EscapedCodeBase jsou zastaralé. Použití pro načtení sestavení není podporováno.
SYSLIB0045 Upozorňující Kryptografické metody továrny, které přijímají název algoritmu, jsou zastaralé. Místo toho použijte metodu bez parametrů Create objektu pro vytváření pro typ algoritmu.
SYSLIB0046 Upozorňující Metoda ControlledExecution.Run(Action, CancellationToken) může poškodit proces a neměl by být použit v produkčním kódu.
SYSLIB0047 Upozorňující XmlSecureResolver je zastaralý. Místo toho použijte XmlResolver.ThrowingResolver při pokusu o zakázání překladu externích entit XML.
SYSLIB0048 Upozorňující RSA.EncryptValue(Byte[]) a RSA.DecryptValue(Byte[]) jsou zastaralé. Použijte RSA.Encrypt a RSA.Decrypt místo toho.
SYSLIB0049 Upozorňující JsonSerializerOptions.AddContext je zastaralý. Chcete-li zaregistrovat JsonSerializerContext, použijte buď TypeInfoResolver nebo TypeInfoResolverChain vlastnost.
SYSLIB0050 Upozorňující Serializace založená na formátovacím formátu je zastaralá a neměla by být použita.
SYSLIB0051 Upozorňující Rozhraní API, která podporují zastaralé serializace založené na formátovacím systému, jsou zastaralá. Neměly by být volána ani rozšířena kódem aplikace.
SYSLIB0052 Upozorňující Zastaralá jsou rozhraní API, která podporují zastaralé mechanismy rozšiřitelnosti regulárních výrazů.
SYSLIB0053 Upozorňující AesGcm by měla označit požadovanou velikost značky pro šifrování a dešifrování. Použijte konstruktor, který přijímá velikost značky.
SYSLIB0054 Upozorňující Thread.VolatileRead a Thread.VolatileWrite jsou zastaralé. Použijte Volatile.Read nebo Volatile.Write místo toho.
SYSLIB0055 Upozorňující AdvSimd.ShiftRightLogicalRoundedNarrowingSaturate* metody s podepsanými parametry jsou zastaralé. Místo toho použijte nepodepsané přetížení.
SYSLIB0056 Upozorňující Assembly.LoadFrom a vlastní AssemblyHashAlgorithm je zastaralý. Použít přetížení bez .AssemblyHashAlgorithm
SYSLIB0057 Upozorňující X509Certificate2 a X509Certificate konstruktory pro binární obsah a obsah souboru jsou zastaralé.

Potlačení upozornění

Doporučujeme použít dostupné alternativní řešení, kdykoli je to možné. Pokud ale kód nemůžete změnit, můžete potlačit upozornění prostřednictvím #pragma direktivy nebo <NoWarn> nastavení projektu. Pokud musíte použít zastaralá rozhraní API a SYSLIB0XXX diagnostika se nezobrazí jako chyba, můžete potlačit upozornění v kódu nebo v souboru projektu.

Potlačení upozornění v kódu:

// Disable the warning.
#pragma warning disable SYSLIB0001

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

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

Potlačení upozornění v souboru projektu:

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

Poznámka:

Potlačení upozornění tímto způsobem zakáže jenom vámi zadaná upozornění na obsoletion. Nezakážuje žádná další upozornění, včetně upozornění obsoletion s různými diagnostickými ID.

Viz také