Устаревшие API с отличными от заданных по умолчанию идентификаторами диагностики

Начиная с версии .NET 5 некоторые API-интерфейсы помечены как устаревшие. Это критическое изменение относится к API, которые были помечены как устаревшие с помощью пользовательского идентификатора диагностики. В случае отключения идентификатора диагностики устаревших элементов по умолчанию (CS0618 для компилятора C#) не отключаются предупреждения, создаваемые компилятором при использовании этих API.

Описание изменения

В предыдущих версиях .NET эти API можно использовать без каких-либо предупреждений сборки. В .NET 5 и более поздних версиях использование этих API создает предупреждение во время компиляции или ошибку с пользовательским идентификатором диагностики. Применение пользовательских идентификаторов диагностики позволяет отключать предупреждения об устаревших элементах по отдельности вместо общего запрета всех таких предупреждений.

В следующей таблице перечислены пользовательские идентификаторы диагностики и соответствующие им предупреждающие сообщения для устаревших API.

ИД диагностики Description Серьезность
SYSLIB0001 Кодировка UTF-7 небезопасна и не должна использоваться. Вместо нее рекомендуется использовать UTF-8. Предупреждение
SYSLIB0002 PrincipalPermissionAttribute не учитывается средой выполнения и не должен использоваться. Ошибка
SYSLIB0003 Управление доступом для кода (CAS) не поддерживается или не учитывается средой выполнения. Предупреждение
SYSLIB0004 Функция области ограниченного выполнения (CER) не поддерживается. Предупреждение
SYSLIB0005 Глобальный кэш сборок не поддерживается. Предупреждение
SYSLIB0006 Thread.Abort() не поддерживается и вызывает PlatformNotSupportedException. Предупреждение
SYSLIB0007 Реализации этого алгоритма шифрования по умолчанию не поддерживается. Предупреждение
SYSLIB0008 API CreatePdbGenerator() не поддерживается и вызывает PlatformNotSupportedException. Предупреждение
SYSLIB0009 Методы AuthenticationManager.Authenticate и AuthenticationManager.PreAuthenticate не поддерживаются и вызывают PlatformNotSupportedException. Предупреждение
SYSLIB0010 Некоторые API удаленного взаимодействия не поддерживаются и вызывают PlatformNotSupportedException. Предупреждение
SYSLIB0011 Сериализация BinaryFormatter устарела и не должна использоваться. Предупреждение
SYSLIB0012 Assembly.CodeBase и Assembly.EscapedCodeBase включены только для обеспечения совместимости с .NET Framework. Вместо этого используйте Assembly.Location. Предупреждение

Представленные версии

.NET 5.0

  • Следуйте указаниям, приведенным для каждого идентификатора диагностики, используя URL, предоставленный в предупреждении.

  • Предупреждения или ошибки об этих устаревших элементах нельзя отключить с помощью стандартного идентификатора диагностики для устаревших типов или членов. Используйте вместо него пользовательский идентификатор диагностики SYSLIBxxxx.

Затронутые API

SYSLIB0001

SYSLIB0002

SYSLIB0003

Классы в пространстве имен System.Security.Permissions:

Классы, производные от CodeAccessSecurityAttribute:

Интерфейсы:

Классы, реализующие IStackWalk:

Классы, реализующие IPermission:

Классы, производные от CodeAccessPermission:

Классы, производные от ResourcePermissionBase:

Перечисления в пространстве имен System.Security.Permissions:

Классы и члены, зависящие от типов управления доступом для кода:

SYSLIB0004

SYSLIB0005

SYSLIB0006

SYSLIB0007

SYSLIB0008

SYSLIB0009

SYSLIB0010

SYSLIB0011

SYSLIB0012

См. также