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


Совместимость приложений в .NET Framework

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

Каждое приложение предназначено для конкретной версии платформы .NET Framework:

  • Определение целевой платформы в Visual Studio.
  • Указание целевой платформы в файле проекта.
  • Применение TargetFrameworkAttribute к исходному коду.

При миграции с одной версии .NET Framework на другую необходимо учитывать два типа изменений:

Изменения в среде выполнения

Проблемы среды выполнения — это проблемы, возникающие при размещении новой среды выполнения на компьютере и изменения поведения приложения. При запуске версии, более новой, чем целевая, платформа .NET Framework использует специальное поведение, чтобы имитировать старую целевую версию. Приложение выполняется в более новой версии, но действует так, как если бы она выполнялось в более старой версии. Многие из проблем совместимости между версиями .NET Framework смягчаются с помощью этой модели коррекции. Например, если двоичный файл скомпилирован для .NET Framework 4.0, но выполняется на компьютере с .NET Framework 4.5 или более поздней версии, он выполняется в режиме совместимости .NET Framework 4.0. Это означает, что многие изменения в более поздней версии не влияют на двоичный файл.

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

Изменения в ретаргетинге

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

Классификация влияния

В статьях, описывающих изменения среды выполнения и перенацеливание, например изменения для миграции на .NET Framework 4.8.x, отдельные элементы классифицируются по их ожидаемому влиянию следующим образом:

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

незначительные
Изменение, которое влияет на небольшое количество приложений или требует незначительных изменений кода.

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

прозрачный
Изменение, которое не оказывает заметного влияния на разработчика или пользователя приложения. Приложение не должно требовать изменения из-за этого изменения.

См. также