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

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

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

  • Назначив требуемую версию .NET Framework в Visual Studio.
  • Указав требуемую версию .NET Framework в файле проекта.
  • Применив TargetFrameworkAttribute к исходному коду.

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

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

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

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

Изменение целевой платформы

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

Классификация последствий

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

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

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

Edge case (Пограничный случай)
Изменение влияет на приложения в исключительных ситуациях.

Transparent (Прозрачный)
Изменение не оказывает особого влияния на разработчика или пользователя приложения. При этом вносить изменения в приложения не требуется.

См. также