Устаревшие API с нестандартными ИД диагностики (.NET 6)
Начиная с версии .NET 6, некоторые API-интерфейсы помечены как устаревшие. Это критическое изменение относится к API, которые были помечены как устаревшие с помощью пользовательского идентификатора диагностики. В случае отключения идентификатора диагностики устаревших элементов по умолчанию (CS0618 для компилятора C#) не отключаются предупреждения, создаваемые компилятором при использовании этих API.
Описание изменения
В предыдущих версиях .NET эти API можно использовать без каких-либо предупреждений сборки. В .NET 6 и более поздних версиях эти API создают предупреждение во время компиляции или ошибку с пользовательским идентификатором диагностики. Применение пользовательских идентификаторов диагностики позволяет отключать предупреждения об устаревших элементах по отдельности вместо общего запрета всех таких предупреждений.
В следующей таблице перечислены пользовательские идентификаторы диагностики и соответствующие им предупреждающие сообщения для устаревших API.
ИД диагностики | Description | Серьезность |
---|---|---|
SYSLIB0013 | Uri.EscapeUriString(String) Может повредить строку URI в некоторых случаях. Рекомендуется использовать Uri.EscapeDataString(String) для строковых компонентов запроса. | Предупреждение |
SYSLIB0014 | WebRequest, HttpWebRequest, ServicePoint и WebClient являются устаревшими. Вместо этого используйте HttpClient. | Предупреждение |
SYSLIB0015 | DisablePrivateReflectionAttribute не оказывает влияния на .NET 6+. | Предупреждение |
SYSLIB0016 | Используйте перегрузки Graphics.GetContextInfo, принимающие аргументы, для повышения производительности и уменьшения числа выделений. | Предупреждение |
SYSLIB0017 | Подписывание со строгими именами не поддерживается и выдает исключение PlatformNotSupportedException. | Предупреждение |
SYSLIB0018 | Загрузка только в контексте отражения не поддерживается и выдает исключение PlatformNotSupportedException. | Предупреждение |
SYSLIB0019 | Элементы System.Runtime.InteropServices.RuntimeEnvironment SystemConfigurationFile, GetRuntimeInterfaceAsIntPtr(Guid, Guid) и GetRuntimeInterfaceAsObject(Guid, Guid) больше не поддерживаются и не выдают исключение PlatformNotSupportedException. | Предупреждение |
SYSLIB0020 | JsonSerializerOptions.IgnoreNullValues устарел. Чтобы игнорировать значения NULL при сериализации, присвойте параметру DefaultIgnoreCondition значение JsonIgnoreCondition.WhenWritingNull. | Предупреждение |
SYSLIB0021 | Производные криптографические типы являются устаревшими. Вместо этого используйте метод Create для базового типа. |
Предупреждение |
SYSLIB0022 | Типы Rijndael и RijndaelManaged являются устаревшими. Вместо этого используйте Aes. | Предупреждение |
SYSLIB0023 | RNGCryptoServiceProvider устарел. Чтобы создать случайное число, используйте вместо этого один из статических методов RandomNumberGenerator. | Предупреждение |
SYSLIB0024 | SYSLIB0024: операции создания и выгрузки методов AppDomain не поддерживаются и вызывают исключение | Предупреждение |
SYSLIB0025 | SuppressIldasmAttribute не оказывает влияния на .NET 6+. | Предупреждение |
SYSLIB0026 | X509Certificate и X509Certificate2 являются неизменяемыми. Используйте соответствующий конструктор для создания нового сертификата. | Предупреждение |
SYSLIB0027 | PublicKey.Key устарел. Используйте соответствующий метод для получения открытого ключа, например GetRSAPublicKey(). | Предупреждение |
SYSLIB0028 | X509Certificate2.PrivateKey устарел. Используйте соответствующий метод для получения закрытого ключа, например RSACertificateExtensions.GetRSAPrivateKey(X509Certificate2), или используйте метод X509Certificate2.CopyWithPrivateKey(ECDiffieHellman) для создания нового экземпляра с закрытым ключом. | Предупреждение |
SYSLIB0029 | ProduceLegacyHmacValues устарел. Создание устаревших значений HMAC больше не поддерживается. |
Предупреждение |
SYSLIB0030 | HMACSHA1 всегда использует реализацию алгоритма, предоставляемую платформой. Используйте конструктор без параметра useManagedSha1 . |
Предупреждение |
SYSLIB0031 | CryptoConfig.EncodeOID(String) устарел. Используйте функции ASN.1, предоставляемые в System.Formats.Asn1. | Предупреждение |
SYSLIB0032 | Восстановление после исключений поврежденного состояния процесса не поддерживается. HandleProcessCorruptedStateExceptionsAttribute игнорируется. | Предупреждение |
SYSLIB0033 | Rfc2898DeriveBytes.CryptDeriveKey(String, String, Int32, Byte[]) является устаревшим и не поддерживается. Вместо этого используйте PasswordDeriveBytes.CryptDeriveKey(String, String, Int32, Byte[]). | Предупреждение |
SYSLIB0034 | CmsSigner(CspParameters) устарел. Вместо него используйте альтернативный конструктор. | Предупреждение |
SYSLIB0035 | SignerInfo.ComputeCounterSignature() устарел. Используйте перегрузку, которая принимает CmsSigner. | Предупреждение |
Представленные версии
.NET 6
Рекомендуемое действие
Следуйте указаниям, приведенным для каждого идентификатора диагностики, используя URL, предоставленный в предупреждении.
Предупреждения или ошибки об этих устаревших элементах нельзя отключить с помощью стандартного идентификатора диагностики для устаревших типов или членов. Используйте вместо него пользовательский идентификатор диагностики
SYSLIBxxxx
.
Затронутые 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