Устаревшие возможности .NET Framework

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

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

ПримечаниеПримечание

Применительно к типам и членам платформы .NET Framework термины устаревший и нерекомендуемый имеют одинаковое значение.

Атрибут ObsoleteAttribute

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

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

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

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

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

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

    – или –

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

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

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

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

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

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

Версия платформы .NET Framework

version строковое значение

4

v4.0

3.5

v2.0.50727

2.0

v2.0.50727

1.1

v1.1.4322

1.0

v1.0.3705

Списки устаревших типов и членов для платформы .NET Framework 4

Устаревшие типы

Устаревшие члены

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

.NET Framework 3.5 Obsolete List

.NET Framework 2.0 Obsolete List

См. также

Ссылки

Элемент <supportedRuntime>