Obsoletions with non-default diagnostic IDs (.NET 7)
Некоторые API помечены как устаревшие, начиная с .NET 7. Это критическое изменение относится к API, которые были помечены как устаревшие с помощью пользовательского идентификатора диагностики. В случае отключения идентификатора диагностики устаревших элементов по умолчанию (CS0618 для компилятора C#) не отключаются предупреждения, создаваемые компилятором при использовании этих API.
Описание изменения
В предыдущих версиях .NET эти API можно использовать без каких-либо предупреждений сборки. В .NET 7 и более поздних версиях использование этих API создает предупреждение во время компиляции или ошибку с пользовательским идентификатором диагностики. Применение пользовательских идентификаторов диагностики позволяет отключать предупреждения об устаревших элементах по отдельности вместо общего запрета всех таких предупреждений.
В следующей таблице перечислены пользовательские идентификаторы диагностики и соответствующие им предупреждающие сообщения для устаревших API.
ИД диагностики | Description | Серьезность |
---|---|---|
SYSLIB0036 | Regex.CompileToAssembly является устаревшим и не поддерживается. Вместо него используйте RegexGeneratorAttribute с генератором источника регулярных выражений. |
Предупреждение |
SYSLIB0037 | AssemblyName члены HashAlgorithm, ProcessorArchitectureа также устаревшие и VersionCompatibility не поддерживаются. | Предупреждение |
SYSLIB0038 | SerializationFormat.Binary устарел и не следует использовать. | Предупреждение |
SYSLIB0039 | TLS версии 1.0 и 1.1 имеют известные уязвимости и не рекомендуется. Вместо этого используйте более новую версию TLS или используйте SslProtocols.None для отсрочки использования по умолчанию ОС. | Предупреждение |
SYSLIB0040 | EncryptionPolicy.NoEncryption и EncryptionPolicy.AllowNoEncryption значительно уменьшите безопасность и не следует использовать в рабочем коде. | Предупреждение |
SYSLIB0041 | Алгоритм хэша по умолчанию и количество итераций в Rfc2898DeriveBytes конструкторах устарели и небезопасны. Используйте конструктор, который принимает хэш-алгоритм и количество итераций. | Предупреждение |
SYSLIB0042 | ToXmlString и FromXmlString не имеют реализации для типов криптографии с многоточием (ECC) и устарели. Используйте стандартный формат импорта и экспорта, например ExportSubjectPublicKeyInfo ImportSubjectPublicKeyInfo открытых ключей или ImportPkcs8PrivateKey ExportPkcs8PrivateKey закрытых ключей. |
Предупреждение |
SYSLIB0043 | ECDiffieHellmanPublicKey.ToByteArray() и связанный конструктор не имеют согласованной и совместимой реализации на всех платформах. Вместо этого используйте ECDiffieHellmanPublicKey.ExportSubjectPublicKeyInfo(). | Предупреждение |
SYSLIB0044 | AssemblyName.CodeBase и AssemblyName.EscapedCodeBase являются устаревшими. | Предупреждение |
SYSLIB0045 | Методы криптографической фабрики, принимающие имя алгоритма, устарели. Вместо этого используйте метод без параметров Create фабрики для типа алгоритма. |
Предупреждение |
SYSLIB0047 | XmlSecureResolver устарел. Вместо XmlResolver.ThrowingResolver этого следует запретить разрешение внешних XML-ресурсов. |
Предупреждение |
Представленные версии
.NET 7
Тип критического изменения
Эти обнажения могут повлиять на совместимость источников.
Рекомендуемое действие
Следуйте указаниям, приведенным для каждого идентификатора диагностики, используя URL, предоставленный в предупреждении.
Предупреждения или ошибки об этих устаревших элементах нельзя отключить с помощью стандартного идентификатора диагностики для устаревших типов или членов. Используйте вместо него пользовательский идентификатор диагностики
SYSLIBxxxx
.
Затронутые API
SYSLIB0036
SYSLIB0037
SYSLIB0038
SYSLIB0039
SYSLIB0040
- System.Net.Security.EncryptionPolicy.AllowNoEncryption
- System.Net.Security.EncryptionPolicy.NoEncryption
SYSLIB0041
- Rfc2898DeriveBytes(String, Byte[])
- Rfc2898DeriveBytes(String, Int32)
- Rfc2898DeriveBytes(Byte[], Byte[], Int32)
- Rfc2898DeriveBytes(String, Byte[], Int32)
- Rfc2898DeriveBytes(String, Int32, Int32)
SYSLIB0042
- System.Security.Cryptography.ECDiffieHellmanCng.FromXmlString(String, ECKeyXmlFormat)
- System.Security.Cryptography.ECDiffieHellmanCng.ToXmlString(ECKeyXmlFormat)
- System.Security.Cryptography.ECDiffieHellmanCngPublicKey.FromXmlString(String)
- System.Security.Cryptography.ECDiffieHellmanCngPublicKey.ToXmlString()
- System.Security.Cryptography.ECDiffieHellmanPublicKey.ToXmlString()
- System.Security.Cryptography.ECDsaCng.FromXmlString(String, ECKeyXmlFormat)
- System.Security.Cryptography.ECDsaCng.ToXmlString(ECKeyXmlFormat)
SYSLIB0043
- System.Security.Cryptography.ECDiffieHellmanPublicKey.ToByteArray()
- ECDiffieHellmanPublicKey(Byte[])
SYSLIB0045
- System.Security.Cryptography.Aes.Create(String)
- System.Security.Cryptography.AsymmetricAlgorithm.Create(String)
- System.Security.Cryptography.DES.Create(String)
- System.Security.Cryptography.ECDiffieHellman.Create(String)
- System.Security.Cryptography.ECDsa.Create(String)
- System.Security.Cryptography.HashAlgorithm.Create(String)
- System.Security.Cryptography.KeyedHashAlgorithm.Create(String)
- System.Security.Cryptography.RandomNumberGenerator.Create(String)
- System.Security.Cryptography.RC2.Create(String)
- System.Security.Cryptography.Rijndael.Create(String)
- System.Security.Cryptography.RSA.Create(String)
- System.Security.Cryptography.SHA1.Create(String)
- System.Security.Cryptography.SHA256.Create(String)
- System.Security.Cryptography.SHA384.Create(String)
- System.Security.Cryptography.SHA512.Create(String)
- System.Security.Cryptography.SymmetricAlgorithm.Create(String)
- System.Security.Cryptography.TripleDES.Create(String)