Obsoletions в библиотеке классов платформа .NET Framework

платформа .NET Framework с течением времени. Каждая новая версия добавила новые типы и члены типов, которые предоставили новые функциональные возможности. Существующие типы и их члены также изменились с течением времени. Например, некоторые типы стали менее важными, так как технология, которую они поддерживали, была заменена новой технологией, и некоторые методы были заменены более новыми методами, которые являются более превосходными в некотором смысле.

Платформа .NET Framework и среда CLR ориентированы на поддержку обратной совместимости (которая позволяет запускать приложения, разработанные в одной версии платформы .NET Framework, в более новой версии .NET Framework). Это затрудняет простое удаление типа или его члена. Вместо этого платформа .NET Framework указывает, что тип или член типа больше не следует использовать, помечая его как устаревшие или устаревшие. Обналичив тип или член, разработчики знали, что он ушел и имел время реагировать на его удаление. Однако существующий код, использующий тип или член, продолжал выполняться в новой версии .NET.

Примечание.

В .NET (Core) удаление API не обязательно означает, что API будет удален. Дополнительные сведения см. в статье об удалении API в .NET.

Атрибут ObsoleteAttribute

платформа .NET Framework указывает, что элемент типа или типа устарел, помечая его атрибутомObsoleteAttribute. Применение атрибута к типу или члену указывает, что тип или член будут удалены в какой-либо будущей версии без нарушения скомпилированного кода, использующего этот элемент.

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

Даже если во время компиляции вместо предупреждения происходит ошибка, атрибут ObsoleteAttribute не влияет на поведение во время выполнения. Таким образом, приложения, использующие тип или член, который был успешно скомпилирован, всегда выполняются успешно. Сбой вызывает только повторная компиляция такого приложения.

Способ обработки устаревших типов и членов

При обновлении и повторной компиляции существующего кода использование устаревшего типа или члена, создающего предупреждение компилятора в приложении, приемлемо. Однако следует просматривать предупреждение компилятора для того, чтобы определить, следует ли изменить код приложения. Если в предупреждении не указан допустимый альтернативный вариант, следует выполнить одно из следующих действий:

  • Измените код, удалив такой тип или член, если это возможно.

    –или–

  • Просмотрите документацию по данной технологии, чтобы определить, что делать с таким нерекомендуемым типом или членом.

Вы можете не перекомпилировать существующий код в более поздней версии платформа .NET Framework. Вместо этого можно указать версию платформа .NET Framework, для которой выполняется существующий скомпилированный код. Например, предположим, что у вас есть приложение с именем app1.exe, скомпилированное в платформа .NET Framework 3.5, но вы хотите, чтобы приложение выполнялось в платформа .NET Framework 4.5. Для этого необходимо выполнить следующие действия:

  1. Создайте файл конфигурации для основного исполняемого файла и назовите его appName.exe.config, где appName — это имя исполняемого файла приложения. Для используемого в данном примере приложения app1.exe необходимо создать файл конфигурации app1.exe.config.

  2. Добавьте в этот файл конфигурации следующее.

    <configuration>
       <startup>
          <supportedRuntime version="v4.0" />
       </startup>
    </configuration>
    

Чтобы выбрать конкретную версию .NET Framework, назначьте атрибуту version одно из следующих строковых значений:

Версия платформы .NET Framework version string
4.8 (включая 4.8.1) v4.0
4.7 (включая 4.7.1 и 4.7.2) v4.0
4.6 (включая 4.6.1 и 4.6.2) v4.0
4.5 (включая 4.5.1 и 4.5.2) v4.0
4 v4.0
3.5 v2.0.50727
2.0 v2.0.50727
1,1 v1.1.4322
1.0 v1.0.3705

Списки устаревших API для .NET Framework 4.5 и более поздних версий

Списки устаревших API для предыдущих версий

См. также