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
SYSLIB0XXX
formá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.