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) и устарели. Используйте стандартный формат импорта и экспорта, например ExportSubjectPublicKeyInfoImportSubjectPublicKeyInfo открытых ключей или ImportPkcs8PrivateKeyExportPkcs8PrivateKey закрытых ключей. Предупреждение
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

SYSLIB0041

SYSLIB0042

SYSLIB0043

SYSLIB0045

SYSLIB0047

См. также