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 odbicia nie jest obsługiwane i zgłasza błąd PlatformNotSupportedException. |
SYSLIB0019 | Ostrzeżenie | Członkowie System.Runtime.InteropServices.RuntimeEnvironment , SystemConfigurationFilei GetRuntimeInterfaceAsIntPtr(Guid, Guid) nie są już obsługiwane i zgłaszają wartość GetRuntimeInterfaceAsObject(Guid, Guid).PlatformNotSupportedException |
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ń. |
SYSLIB0056 | Ostrzeżenie |
Assembly.LoadFrom
AssemblyHashAlgorithm element niestandardowy jest przestarzały. Użyj przeciążeń bez elementu AssemblyHashAlgorithm . |
SYSLIB0057 | Ostrzeżenie |
X509Certificate2 i X509Certificate konstruktory dla zawartości binarnej i plików są przestarzałe. |
SYSLIB0058 | Ostrzeżenie | Właściwości KeyExchangeAlgorithm , KeyExchangeStrength , CipherAlgorithm , CipherAlgorithmStrength , HashAlgorithm , oraz HashStrength należące do SslStream są przestarzałe. Użycie w zamian parametru NegotiatedCipherSuite. |
SYSLIB0059 | Ostrzeżenie | SystemEvents.EventsThreadShutdown wywołania zwrotne nie są uruchamiane przed zakończeniem procesu. Użycie w zamian parametru AppDomain.ProcessExit. |
SYSLIB0060 | Ostrzeżenie | Konstruktory w System.Security.Cryptography.Rfc2898DeriveBytes są przestarzałe. Użycie w zamian parametru Rfc2898DeriveBytes.Pbkdf2. |
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ż
- Obsoletions interfejsu API z nie domyślnymi identyfikatorami diagnostycznymi (.NET 5)
- Obsoletions interfejsu API z nie domyślnymi identyfikatorami diagnostycznymi (.NET 6)
- Obsoletions interfejsu API z nie domyślnymi identyfikatorami diagnostycznymi (.NET 7)
- Obsoletions interfejsu API z nie domyślnymi identyfikatorami diagnostycznymi (.NET 8)