Поделиться через


Устаревшие элементы в библиотеке классов .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 струна
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 для предыдущих версий

См. также