Obsoletions interfejsu API z nie domyślnymi identyfikatorami diagnostycznymi (.NET 6)
Niektóre interfejsy API zostały oznaczone jako przestarzałe, począwszy od platformy .NET 6. Ta zmiana powodująca niezgodność jest specyficzna dla interfejsów API, które zostały oznaczone jako przestarzałe przy użyciu niestandardowego identyfikatora diagnostycznego. Pomijanie domyślnego identyfikatora diagnostycznego obsoletion, który jest CS0618 dla kompilatora języka C#, nie pomija ostrzeżeń generowanych przez kompilator podczas użycia tych interfejsów API.
Opis zmiany
W poprzednich wersjach platformy .NET te interfejsy API mogą być używane bez żadnego ostrzeżenia dotyczącego kompilacji. W wersjach .NET 6 i nowszych użycie tych interfejsów API powoduje wygenerowanie ostrzeżenia lub błędu w czasie kompilacji z niestandardowym identyfikatorem diagnostycznym. Użycie niestandardowych identyfikatorów diagnostycznych umożliwia pomijanie ostrzeżeń dotyczących obsoletion indywidualnie zamiast pomijania wszystkich ostrzeżeń dotyczących obsoletionu.
W poniższej tabeli wymieniono niestandardowe identyfikatory diagnostyczne i odpowiadające im komunikaty ostrzegawcze dla przestarzałych interfejsów API.
Identyfikator diagnostyczny | opis | Waga błędu |
---|---|---|
SYSLIB0013 | 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. | Ostrzeżenie |
SYSLIB0014 | WebRequest, , HttpWebRequestServicePointi WebClient są przestarzałe. Użycie w zamian parametru HttpClient. | Ostrzeżenie |
SYSLIB0015 | DisablePrivateReflectionAttribute nie ma wpływu na platformę .NET 6+. | Ostrzeżenie |
SYSLIB0016 | Graphics.GetContextInfo Użyj przeciążeń, które akceptują argumenty w celu uzyskania lepszej wydajności i mniejszej liczby alokacji. | Ostrzeżenie |
SYSLIB0017 | Podpisywanie silnej nazwy nie jest obsługiwane i zgłasza błąd PlatformNotSupportedException. | Ostrzeżenie |
SYSLIB0018 | Ładowanie tylko odbicia nie jest obsługiwane i zgłasza błąd PlatformNotSupportedException. | Ostrzeżenie |
SYSLIB0019 | Członkowie System.Runtime.InteropServices.RuntimeEnvironment , GetRuntimeInterfaceAsIntPtr(Guid, Guid)i GetRuntimeInterfaceAsObject(Guid, Guid) nie są już obsługiwane i zgłaszają wartość PlatformNotSupportedException.SystemConfigurationFile | Ostrzeżenie |
SYSLIB0020 | JsonSerializerOptions.IgnoreNullValues jest przestarzały. Aby zignorować wartości null podczas serializacji, ustaw wartość DefaultIgnoreCondition JsonIgnoreCondition.WhenWritingNull. | Ostrzeżenie |
SYSLIB0021 | Pochodne typy kryptograficzne są przestarzałe. Create Zamiast tego użyj metody w typie podstawowym. |
Ostrzeżenie |
SYSLIB0022 | Typy Rijndael i RijndaelManaged są przestarzałe. Użycie w zamian parametru Aes. | Ostrzeżenie |
SYSLIB0023 | RNGCryptoServiceProvider jest przestarzały. Aby wygenerować liczbę losową, użyj jednej z metod statycznych RandomNumberGenerator . | Ostrzeżenie |
SYSLIB0024 | Tworzenie i zwalnianie domen aplikacji nie jest obsługiwane i zgłasza wyjątek. | Ostrzeżenie |
SYSLIB0025 | SuppressIldasmAttribute nie ma wpływu na platformę .NET 6+. | Ostrzeżenie |
SYSLIB0026 | X509Certificate i X509Certificate2 są niezmienne. Użyj odpowiedniego konstruktora, aby utworzyć nowy certyfikat. | Ostrzeżenie |
SYSLIB0027 | PublicKey.Key jest przestarzały. Użyj odpowiedniej metody, aby uzyskać klucz publiczny, taki jak GetRSAPublicKey(). | Ostrzeżenie |
SYSLIB0028 | 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. | Ostrzeżenie |
SYSLIB0029 | ProduceLegacyHmacValues jest przestarzały. Tworzenie starszych wartości HMAC nie jest już obsługiwane. |
Ostrzeżenie |
SYSLIB0030 | HMACSHA1 zawsze używa implementacji algorytmu udostępnianej przez platformę. Użyj konstruktora bez parametru useManagedSha1 . |
Ostrzeżenie |
SYSLIB0031 | CryptoConfig.EncodeOID(String) jest przestarzały. Użyj funkcji ASN.1 podanej w pliku System.Formats.Asn1. | Ostrzeżenie |
SYSLIB0032 | Odzyskiwanie po uszkodzonych wyjątkach stanu procesu nie jest obsługiwane; HandleProcessCorruptedStateExceptionsAttribute jest ignorowany. | Ostrzeżenie |
SYSLIB0033 | 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[]). | Ostrzeżenie |
SYSLIB0034 | CmsSigner(CspParameters) jest przestarzały. Zamiast tego użyj alternatywnego konstruktora. | Ostrzeżenie |
SYSLIB0035 | SignerInfo.ComputeCounterSignature() jest przestarzały. Użyj przeciążenia, które akceptuje zamiast tego CmsSigner . | Ostrzeżenie |
Wprowadzona wersja
.NET 6
Zalecana akcja
Postępuj zgodnie z określonymi wskazówkami podanymi dla każdego identyfikatora diagnostycznego przy użyciu linku adresu URL podanego w ostrzeżeniu.
Ostrzeżenia lub błędy dla tych obsoletions nie mogą być pomijane przy użyciu standardowego identyfikatora diagnostycznego dla przestarzałych typów lub elementów członkowskich; Zamiast tego użyj niestandardowej
SYSLIBxxxx
wartości identyfikatora diagnostycznego.
Dotyczy interfejsów API
SYSLIB0013
SYSLIB0014
SYSLIB0015
SYSLIB0016
SYSLIB0017
SYSLIB0018
- System.Reflection.Assembly.ReflectionOnlyLoad
- System.Reflection.Assembly.ReflectionOnlyLoadFrom(String)
- System.Type.ReflectionOnlyGetType(String, Boolean, Boolean)
SYSLIB0019
- System.Runtime.InteropServices.RuntimeEnvironment.SystemConfigurationFile
- System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeInterfaceAsIntPtr(Guid, Guid)
- System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeInterfaceAsObject(Guid, Guid)
SYSLIB0020
SYSLIB0021
- System.Security.Cryptography.AesCryptoServiceProvider
- System.Security.Cryptography.AesManaged
- System.Security.Cryptography.DESCryptoServiceProvider
- System.Security.Cryptography.MD5CryptoServiceProvider
- System.Security.Cryptography.RC2CryptoServiceProvider
- System.Security.Cryptography.SHA1CryptoServiceProvider
- System.Security.Cryptography.SHA1Managed
- System.Security.Cryptography.SHA256Managed
- System.Security.Cryptography.SHA256CryptoServiceProvider
- System.Security.Cryptography.SHA384Managed
- System.Security.Cryptography.SHA384CryptoServiceProvider
- System.Security.Cryptography.SHA512Managed
- System.Security.Cryptography.SHA512CryptoServiceProvider
- System.Security.Cryptography.TripleDESCryptoServiceProvider