Udostępnij za pośrednictwem


Przestarzałe funkcje na platformie .NET 5+

Począwszy od platformy .NET 5, niektóre interfejsy API, które są nowo oznaczone jako przestarzałe, korzystają z dwóch nowych właściwości w systemie ObsoleteAttribute.

  • Właściwość ObsoleteAttribute.DiagnosticId informuje kompilator o wygenerowaniu ostrzeżeń kompilacji przy użyciu niestandardowego identyfikatora diagnostycznego. Identyfikator niestandardowy umożliwia pomijanie ostrzeżenia o obsoletionie w szczególności i oddzielnie od siebie. W przypadku obsoletions platformy .NET 5+ format niestandardowego identyfikatora diagnostycznego to SYSLIB0XXX.

  • Właściwość ObsoleteAttribute.UrlFormat informuje kompilator o dołączeniu linku adresu URL, aby dowiedzieć się więcej o obsoletionie.

Jeśli wystąpią ostrzeżenia lub błędy kompilacji z powodu użycia przestarzałego interfejsu API, postępuj zgodnie z określonymi wskazówkami podanymi dla identyfikatora diagnostycznego wymienionego w sekcji Dokumentacja . Ostrzeżenia lub błędy dla tych obsoletions nie mogą być pomijane przy użyciu standardowego identyfikatora diagnostycznego (CS0618) dla przestarzałych typów lub elementów członkowskich; zamiast tego użyj niestandardowych SYSLIB0XXX wartości identyfikatorów diagnostycznych. Aby uzyskać więcej informacji, zobacz Pomijanie ostrzeżeń.

Odwołanie

Poniższa tabela zawiera indeks SYSLIB0XXX do obsoletions na platformie .NET 5+.

Identyfikator diagnostyczny Ostrzeżenie lub błąd opis
SYSLIB0001 Ostrzeżenie Kodowanie UTF-7 jest niezabezpieczone i nie powinno być używane. Zamiast tego rozważ użycie protokołu UTF-8.
SYSLIB0002 Błąd PrincipalPermissionAttribute nie jest honorowany przez środowisko uruchomieniowe i nie może być używany.
SYSLIB0003 Ostrzeżenie Zabezpieczenia dostępu kodu (CAS) nie są obsługiwane ani honorowane przez środowisko uruchomieniowe.
SYSLIB0004 Ostrzeżenie Funkcja regionu wykonywania ograniczonego (CER) nie jest obsługiwana.
SYSLIB0005 Ostrzeżenie Globalna pamięć podręczna zestawów (GAC) nie jest obsługiwana.
SYSLIB0006 Ostrzeżenie Thread.Abort() program nie jest obsługiwany i zgłasza błąd PlatformNotSupportedException.
SYSLIB0007 Ostrzeżenie Domyślna implementacja tego algorytmu kryptografii nie jest obsługiwana.
SYSLIB0008 Ostrzeżenie Interfejs CreatePdbGenerator() API nie jest obsługiwany i zgłasza błąd PlatformNotSupportedException.
SYSLIB0009 Ostrzeżenie AuthenticationManager nie jest obsługiwana. Metody nie będą zwracać żadnych operacji ani zgłaszać PlatformNotSupportedExceptionmetody .
SYSLIB0010 Ostrzeżenie Niektóre interfejsy API komunikacji zdalnie nie są obsługiwane i zgłaszają wyjątek PlatformNotSupportedException.
SYSLIB0011 Ostrzeżenie BinaryFormatter serializacja jest przestarzała i nie powinna być używana.
SYSLIB0012 Ostrzeżenie Assembly.CodeBase i Assembly.EscapedCodeBase są uwzględniane tylko w przypadku zgodności programu .NET Framework. Użycie w zamian parametru Assembly.Location.
SYSLIB0013 Ostrzeżenie Uri.EscapeUriString(String) w niektórych przypadkach może uszkodzić ciąg identyfikatora URI. Zamiast tego rozważ użycie Uri.EscapeDataString(String) składników ciągu zapytania.
SYSLIB0014 Ostrzeżenie WebRequest, , HttpWebRequestServicePointi WebClient są przestarzałe. Użycie w zamian parametru HttpClient.
SYSLIB0015 Ostrzeżenie DisablePrivateReflectionAttribute nie ma wpływu na platformę .NET 6+.
SYSLIB0016 Ostrzeżenie Graphics.GetContextInfo Użyj przeciążeń, które akceptują argumenty w celu uzyskania lepszej wydajności i mniejszej liczby alokacji.
SYSLIB0017 Ostrzeżenie Podpisywanie silnej nazwy nie jest obsługiwane i zgłasza błąd PlatformNotSupportedException.
SYSLIB0018 Ostrzeżenie ładowanie tylko Emocje ion nie jest obsługiwane i zgłasza błąd PlatformNotSupportedException.
SYSLIB0019 Ostrzeżenie Członkowie System.Runtime.InteropServices.RuntimeEnvironment , GetRuntimeInterfaceAsIntPtr(Guid, Guid)i GetRuntimeInterfaceAsObject(Guid, Guid) nie są już obsługiwane i zgłaszają wartość PlatformNotSupportedException.SystemConfigurationFile
SYSLIB0020 Ostrzeżenie JsonSerializerOptions.IgnoreNullValues jest przestarzały. Aby zignorować wartości null podczas serializacji, ustaw wartość DefaultIgnoreConditionJsonIgnoreCondition.WhenWritingNull.
SYSLIB0021 Ostrzeżenie Pochodne typy kryptograficzne są przestarzałe. Create Zamiast tego użyj metody w typie podstawowym.
SYSLIB0022 Ostrzeżenie Typy Rijndael i RijndaelManaged są przestarzałe. Użycie w zamian parametru Aes.
SYSLIB0023 Ostrzeżenie RNGCryptoServiceProvider jest przestarzały. Aby wygenerować liczbę losową, użyj jednej z metod statycznych RandomNumberGenerator .
SYSLIB0024 Ostrzeżenie Tworzenie i zwalnianie domen aplikacji nie jest obsługiwane i zgłasza wyjątek.
SYSLIB0025 Ostrzeżenie SuppressIldasmAttribute nie ma wpływu na platformę .NET 6+.
SYSLIB0026 Ostrzeżenie X509Certificate i X509Certificate2 są niezmienne. Użyj odpowiedniego konstruktora, aby utworzyć nowy certyfikat.
SYSLIB0027 Ostrzeżenie PublicKey.Key jest przestarzały. Użyj odpowiedniej metody, aby uzyskać klucz publiczny, taki jak GetRSAPublicKey().
SYSLIB0028 Ostrzeżenie X509Certificate2.PrivateKey jest przestarzały. Użyj odpowiedniej metody, aby uzyskać klucz prywatny, taki jak RSACertificateExtensions.GetRSAPrivateKey(X509Certificate2), lub użyj X509Certificate2.CopyWithPrivateKey(ECDiffieHellman) metody , aby utworzyć nowe wystąpienie z kluczem prywatnym.
SYSLIB0029 Ostrzeżenie ProduceLegacyHmacValues jest przestarzały. Tworzenie starszych wartości HMAC nie jest już obsługiwane.
SYSLIB0030 Ostrzeżenie HMACSHA1 zawsze używa implementacji algorytmu udostępnianej przez platformę. Użyj konstruktora bez parametru useManagedSha1 .
SYSLIB0031 Ostrzeżenie CryptoConfig.EncodeOID(String) jest przestarzały. Użyj funkcji ASN.1 podanej w pliku System.Formats.Asn1.
SYSLIB0032 Ostrzeżenie Odzyskiwanie po uszkodzonych wyjątkach stanu procesu nie jest obsługiwane; HandleProcessCorruptedStateExceptionsAttribute jest ignorowany.
SYSLIB0033 Ostrzeżenie Rfc2898DeriveBytes.CryptDeriveKey(String, String, Int32, Byte[]) jest przestarzały i nie jest obsługiwany. Użycie w zamian parametru PasswordDeriveBytes.CryptDeriveKey(String, String, Int32, Byte[]).
SYSLIB0034 Ostrzeżenie CmsSigner(CspParameters) jest przestarzały. Zamiast tego użyj alternatywnego konstruktora.
SYSLIB0035 Ostrzeżenie SignerInfo.ComputeCounterSignature() jest przestarzały. Użyj przeciążenia, które akceptuje zamiast tego CmsSigner .
SYSLIB0036 Ostrzeżenie Regex.CompileToAssembly jest przestarzały i nie jest obsługiwany. Zamiast tego należy używać RegexGeneratorAttribute z generatorem źródła wyrażeń regularnych.
SYSLIB0037 Ostrzeżenie AssemblyName elementy członkowskie HashAlgorithm, ProcessorArchitecturei VersionCompatibility są przestarzałe i nie są obsługiwane.
SYSLIB0038 Ostrzeżenie SerializationFormat.Binary jest przestarzały i nie powinien być używany.
SYSLIB0039 Ostrzeżenie Protokoły TLS w wersji 1.0 i 1.1 mają znane luki w zabezpieczeniach i nie są zalecane. Zamiast tego użyj nowszej wersji protokołu TLS lub użyj polecenia SslProtocols.None , aby odroczyć wartości domyślne systemu operacyjnego.
SYSLIB0040 Ostrzeżenie EncryptionPolicy.NoEncryption oraz znacznie zmniejszyć bezpieczeństwo i EncryptionPolicy.AllowNoEncryption nie należy ich używać w kodzie produkcyjnym.
SYSLIB0041 Ostrzeżenie Domyślny algorytm skrótu i liczba iteracji w Rfc2898DeriveBytes konstruktorach są nieaktualne i niezabezpieczone. Użyj konstruktora, który akceptuje algorytm skrótu i liczbę iteracji.
SYSLIB0042 Ostrzeżenie ToXmlString i FromXmlString nie mają implementacji typów kryptograficznych krzywej eliptycznej (ECC) i są przestarzałe. Użyj standardowego formatu importu i eksportu, takiego jak ExportSubjectPublicKeyInfo lub ImportSubjectPublicKeyInfo dla kluczy publicznych oraz ExportPkcs8PrivateKey dla ImportPkcs8PrivateKey kluczy prywatnych.
SYSLIB0043 Ostrzeżenie ECDiffieHellmanPublicKey.ToByteArray() a skojarzony konstruktor nie ma spójnej i współdziałania implementacji na wszystkich platformach. Użycie w zamian parametru ECDiffieHellmanPublicKey.ExportSubjectPublicKeyInfo().
SYSLIB0044 Ostrzeżenie AssemblyName.CodeBase i AssemblyName.EscapedCodeBase są przestarzałe. Używanie ich do ładowania zestawu nie jest obsługiwane.
SYSLIB0045 Ostrzeżenie Metody fabryki kryptograficznych akceptujące nazwę algorytmu są przestarzałe. Zamiast tego użyj metody fabryki bez Create parametrów w typie algorytmu.
SYSLIB0046 Ostrzeżenie Metoda ControlledExecution.Run(Action, CancellationToken) może uszkodzić proces i nie powinna być używana w kodzie produkcyjnym.
SYSLIB0047 Ostrzeżenie XmlSecureResolver jest przestarzały. Zamiast tego należy użyć XmlResolver.ThrowingResolver podczas próby zakazać rozpoznawania jednostek zewnętrznych XML.
SYSLIB0048 Ostrzeżenie RSA.EncryptValue(Byte[]) i RSA.DecryptValue(Byte[]) są przestarzałe. Użyj i RSA.EncryptRSA.Decrypt zamiast tego.
SYSLIB0049 Ostrzeżenie Plik JsonSerializerOptions.AddContext jest przestarzały. Aby zarejestrować właściwość JsonSerializerContext, użyj właściwości TypeInfoResolver lub TypeInfoResolverChain.
SYSLIB0050 Ostrzeżenie Serializacja oparta na formatowaniu jest przestarzała i nie powinna być używana.
SYSLIB0051 Ostrzeżenie Interfejsy API obsługujące przestarzałą serializacji opartą na formatowaniu są przestarzałe. Nie powinny być wywoływane ani rozszerzone przez kod aplikacji.
SYSLIB0052 Ostrzeżenie Interfejsy API, które obsługują przestarzałe mechanizmy rozszerzalności wyrażeń regularnych, są przestarzałe.
SYSLIB0053 Ostrzeżenie AesGcm powinien wskazywać wymagany rozmiar tagu dla szyfrowania i odszyfrowywania. Użyj konstruktora, który akceptuje rozmiar tagu.
SYSLIB0054 Ostrzeżenie Thread.VolatileRead i Thread.VolatileWrite są przestarzałe. Użyj polecenia Volatile.Read lub Volatile.Write zamiast tego.
SYSLIB0055 Ostrzeżenie AdvSimd.ShiftRightLogicalRoundedNarrowingSaturate* metody z podpisanymi parametrami są przestarzałe. Zamiast tego użyj niepodpisanych przeciążeń.

Pomijanie ostrzeżeń

Zaleca się użycie dostępnego obejścia, jeśli jest to możliwe. Jeśli jednak nie możesz zmienić kodu, możesz pominąć ostrzeżenia za pomocą #pragma dyrektywy lub <NoWarn> ustawienia projektu. Jeśli musisz używać przestarzałych interfejsów API, a diagnostyka SYSLIB0XXX nie pojawia się jako błąd, możesz pominąć ostrzeżenie w kodzie lub w pliku projektu.

Aby pominąć ostrzeżenia w kodzie:

// Disable the warning.
#pragma warning disable SYSLIB0001

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

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

Aby pominąć ostrzeżenia w pliku 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>

Uwaga

Pomijanie ostrzeżeń w ten sposób powoduje wyłączenie tylko podanych ostrzeżeń dotyczących obsoletionu. Nie wyłącza żadnych innych ostrzeżeń, w tym ostrzeżeń dotyczących obsoletionu z różnymi identyfikatorami diagnostycznymi.

Zobacz też