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 říká kompilátoru, aby generoval upozornění sestavení pomocí vlastního diagnostického ID. Vlastní ID umožňuje konkrétně a odděleně potlačovat upozornění na zastarání. V případě zastarání oboru názvů System* je formát vlastního ID diagnostiky SYSLIB0XXX. V případě Microsoft.Extensions zastaralostí je formát vlastního diagnostického ID EXTOBS0XXX.
  • Vlastnost ObsoleteAttribute.UrlFormat určuje kompilátoru, aby zahrnul URL odkaz pro získání více informací o zastarání.

Pokud v důsledku použití zastaralého rozhraní API narazíte na upozornění nebo chyby sestavení, postupujte podle konkrétních pokynů uvedených pro ID diagnostiky uvedené v následujících referenčních tabulkách. Upozornění nebo chyby pro tato zastarávání nelze potlačit pomocí standardního diagnostického ID (CS0618) pro zastaralé typy nebo členy; místo toho použijte vlastní SYSLIB0XXX diagnostické ID hodnoty nebo EXTOBS0XXX ID diagnostiky. Další informace naleznete v tématu Potlačení upozornění.

Následující tabulky poskytují index zastaralých rozhraní API s vlastními DIAGNOSTICKÝmi ID v .NET 5 a novějších verzích:

Zastarání SYSLIB

Následující tabulka uvádí SYSLIB0XXX obsoletions v .NET 5+.

Diagnostické ID Upozornění nebo chyba Popis
SYSLIB0001 Varování 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 není podporován prostředím runtime a nesmí se používat.
SYSLIB0003 Varování Runtime nepodporuje ani neakceptuje zabezpečení přístupu kódu (CAS).
SYSLIB0004 Varování Funkce oblasti omezeného spuštění (CER) není podporovaná.
SYSLIB0005 Varování Globální mezipaměť sestavení (GAC) není podporována.
SYSLIB0006 Varování Thread.Abort() není podporován a vyvolá PlatformNotSupportedException.
SYSLIB0007 Varování Výchozí implementace tohoto kryptografického algoritmu není podporována.
SYSLIB0008 Varování Rozhraní CreatePdbGenerator() API není podporováno a vyvolává PlatformNotSupportedException.
SYSLIB0009 Varování AuthenticationManager se nepodporuje. Metody budou mít nulovou operaci nebo vyvolají PlatformNotSupportedException.
SYSLIB0010 Varování Některá vzdálená rozhraní API nejsou podporována a vyvolají PlatformNotSupportedException.
SYSLIB0011 Varování BinaryFormatter serializace je zastaralá a neměla by být použita.
SYSLIB0012 Varování Assembly.CodeBase a Assembly.EscapedCodeBase jsou zahrnuty pouze pro kompatibilitu rozhraní .NET Framework. Místo toho použijte Assembly.Location.
SYSLIB0013 Varování 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 Varování WebRequest, HttpWebRequesta ServicePointWebClient jsou zastaralé. Místo toho použijte HttpClient.
SYSLIB0015 Varování DisablePrivateReflectionAttribute nemá žádný vliv na .NET 6 nebo novější.
SYSLIB0016 Varování Použijte přetížení Graphics.GetContextInfo, která přijímají argumenty, pro lepší výkon a méně alokací.
SYSLIB0017 Varování Podepisování silným názvem není podporováno a vyvolá PlatformNotSupportedException.
SYSLIB0018 Varování Načítání pouze reflexe není podporováno a vyvolá PlatformNotSupportedException.
SYSLIB0019 Varování Členové System.Runtime.InteropServices.RuntimeEnvironment, SystemConfigurationFile, GetRuntimeInterfaceAsIntPtr(Guid, Guid) a GetRuntimeInterfaceAsObject(Guid, Guid) již nejsou podporovány a vyvolají PlatformNotSupportedException.
SYSLIB0020 Varování JsonSerializerOptions.IgnoreNullValues je zastaralá. Pokud chcete při serializaci ignorovat hodnoty null, nastavte DefaultIgnoreCondition hodnotu JsonIgnoreCondition.WhenWritingNull.
SYSLIB0021 Varování Odvozené kryptografické typy jsou zastaralé. Místo toho použijte metodu Create základního typu.
SYSLIB0022 Varování Rijndael a RijndaelManaged typy jsou zastaralé. Místo toho použijte Aes.
SYSLIB0023 Varování RNGCryptoServiceProvider je zastaralá. Pokud chcete vygenerovat náhodné číslo, použijte místo toho jednu ze statických RandomNumberGenerator metod.
SYSLIB0024 Varování Vytváření a uvolňování domén AppDomains není podporováno a vyvolá výjimku.
SYSLIB0025 Varování SuppressIldasmAttribute nemá žádný vliv na .NET 6 nebo novější.
SYSLIB0026 Varování X509Certificate a X509Certificate2 jsou neměnné. Pomocí příslušného konstruktoru vytvořte nový certifikát.
SYSLIB0027 Varování PublicKey.Key je zastaralá. Pomocí příslušné metody získejte veřejný klíč, například GetRSAPublicKey().
SYSLIB0028 Varování 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 Varování ProduceLegacyHmacValues je zastaralá. Vytváření starších hodnot HMAC se už nepodporuje.
SYSLIB0030 Varování HMACSHA1 vždy používá implementaci algoritmu poskytovanou platformou. Použijte konstruktor bez parametru useManagedSha1 .
SYSLIB0031 Varování CryptoConfig.EncodeOID(String) je zastaralá. Použijte funkci ASN.1, která je součástí System.Formats.Asn1.
SYSLIB0032 Varování Obnovení z výjimek poškozeného stavu procesu není podporováno; ignoruje se HandleProcessCorruptedStateExceptionsAttribute.
SYSLIB0033 Varování Rfc2898DeriveBytes.CryptDeriveKey(String, String, Int32, Byte[]) je zastaralý a nepodporuje se. Místo toho použijte PasswordDeriveBytes.CryptDeriveKey(String, String, Int32, Byte[]).
SYSLIB0034 Varování CmsSigner(CspParameters) je zastaralá. Místo toho použijte alternativní konstruktor.
SYSLIB0035 Varování SignerInfo.ComputeCounterSignature() je zastaralá. Použijte přetížení, které místo toho přijme CmsSigner .
SYSLIB0036 Varování Regex.CompileToAssembly je zastaralý a nepodporuje se. Místo toho použijte RegexGeneratorAttribute s generátorem zdrojového kódu pro regulární výrazy.
SYSLIB0037 Varování AssemblyNamečlenovéHashAlgorithm, ProcessorArchitecture, a VersionCompatibility jsou zastaralé a nejsou podporovány.
SYSLIB0038 Varování SerializationFormat.Binary je zastaralý a neměl by se používat.
SYSLIB0039 Varování 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 Varování EncryptionPolicy.NoEncryption k EncryptionPolicy.AllowNoEncryption výrazně snižují zabezpečení a by neměly být používány v produkčním kódu.
SYSLIB0041 Varování 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 Varování ToXmlString a FromXmlString nemají žádnou implementaci pro typy kryptografie eliptických křivek (ECC) a jsou zastaralé. Použijte standardní formát pro import a export, jako je ExportSubjectPublicKeyInfo nebo ImportSubjectPublicKeyInfo pro veřejné klíče a ExportPkcs8PrivateKey nebo ImportPkcs8PrivateKey pro soukromé klíče.
SYSLIB0043 Varování 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 Varování AssemblyName.CodeBase a AssemblyName.EscapedCodeBase jsou zastaralé. Použití jich pro načtení sestavení není podporováno.
SYSLIB0045 Varování Tovární kryptografické metody, které přijímají jméno algoritmu, jsou zastaralé. Místo toho použijte metodu bez parametrů Create objektu pro vytváření pro typ algoritmu.
SYSLIB0046 Varování 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 Varování XmlSecureResolver je zastaralá. Místo toho použijte XmlResolver.ThrowingResolver, pokud chcete zakázat vyřešení externích entit XML.
SYSLIB0048 Varování RSA.EncryptValue(Byte[]) a RSA.DecryptValue(Byte[]) jsou zastaralé. Použijte RSA.Encrypt a RSA.Decrypt místo toho.
SYSLIB0049 Varování JsonSerializerOptions.AddContext je zastaralý. Chcete-li zaregistrovat JsonSerializerContext, použijte buď TypeInfoResolver nebo TypeInfoResolverChain vlastnost.
SYSLIB0050 Varování Serializace založená na formátovacím formátu je zastaralá a neměla by být použita.
SYSLIB0051 Varování Rozhraní API, která podporují zastaralé serializace založené na formátovačích, jsou zastaralá. Neměly by být volány ani rozšířeny kódem aplikace.
SYSLIB0052 Varování Zastaralá jsou rozhraní API, která podporují zastaralé mechanismy rozšiřitelnosti regulárních výrazů.
SYSLIB0053 Varování 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 Varování Thread.VolatileRead a Thread.VolatileWrite jsou zastaralé. Použijte Volatile.Read nebo Volatile.Write místo toho.
SYSLIB0055 Varování AdvSimd.ShiftRightLogicalRoundedNarrowingSaturate* metody s podepsanými parametry jsou zastaralé. Místo toho použijte nepodepsané přetížení.
SYSLIB0056 Varování Assembly.LoadFrom s vlastním AssemblyHashAlgorithm je zastaralý. Použijte přetížení bez AssemblyHashAlgorithm.
SYSLIB0057 Varování X509Certificate2 a X509Certificate konstruktory pro binární obsah a obsah souboru jsou zastaralé.
SYSLIB0058 Varování Zastaralé jsou vlastnosti KeyExchangeAlgorithm, KeyExchangeStrength, CipherAlgorithm, CipherAlgorithmStrength, HashAlgorithma HashStrength objektu SslStream. Místo toho použijte NegotiatedCipherSuite.
SYSLIB0059 Varování SystemEvents.EventsThreadShutdown zpětná volání se nespustí před ukončením procesu. Místo toho použijte AppDomain.ProcessExit.
SYSLIB0060 Varování Konstruktory System.Security.Cryptography.Rfc2898DeriveBytes jsou zastaralé. Místo toho použijte Rfc2898DeriveBytes.Pbkdf2.
SYSLIB0061 Varování Zastaralé je používání QueryableQueryable.MaxBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TSource>) a Queryable.MinBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TSource>) při převzetí IComparer<TSource>. Použijte nové, které podporují IComparer<TKey>.
SYSLIB0062 Varování XsltSettings.EnableScript je zastaralá.
SYSLIB0063 Varování Konstruktor NamedPipeClientStream , který má isConnected parametr, je zastaralý, protože argument nemá žádný vliv. Použijte konstruktor, který přijímá direction, isAsynca safePipeHandle.
SYSLIB0064 Varování RSACryptoServiceProvider.Encrypt(Byte[], Boolean) a RSACryptoServiceProvider.Decrypt(Byte[], Boolean) jsou zastaralé. Použijte místo toho přetížení, která přijímají RSAEncryptionPadding.
SYSLIB0065 Varování Přístupová metoda set objektu AsnEncodedData.RawData je zastaralá. Pomocí konstruktoru příslušného typu dekódujte data nebo ho použijte AsnEncodedData.CopyFrom(AsnEncodedData) pro proměnlivé scénáře.

Zastarání EXTOBS

Následující tabulka uvádí EXTOBS0XXX zastaralosti z těchto Microsoft.Extensions knihoven.

Diagnostické ID Upozornění nebo chyba Popis
EXTOBS0001 Varování IResourceMonitor je zastaralý a bude odebrán v budoucí verzi. Zvažte použití pozorovatelných nástrojů monitorování zdrojů.
EXTOBS0002 Varování Metody AddServiceLogEnricher rozšíření byly označeny jako zastaralé počínaje balíčkem verze 10.1.0. Metody obohacují aplikační protokoly, nikoli protokoly služby, takže byly nahrazeny správně pojmenovanými AddApplicationLogEnricher metodami.

Potlačení upozornění

Doporučujeme použít dostupné alternativní řešení, kdykoli je to možné. Pokud ale nemůžete změnit kód, můžete potlačit upozornění prostřednictvím #pragma direktivy nebo <NoWarn> nastavení projektu. Pokud musíte použít zastaralá rozhraní API a SYSLIB0XXXEXTOBS0XXX 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

K 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 pouze zakáže vámi zadaná upozornění na zastaralosti. Nezakazuje žádná jiná upozornění, včetně upozornění na zastaralost s různými diagnostickými ID.

Viz také