Совместимость версий в .NET Framework

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

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

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

Чтобы определить конкретные версии, в которых запускается приложение, добавьте в файл конфигурации этого приложения один или несколько элементов <supportedRuntime>. Каждый элемент <supportedRuntime> определяет поддерживаемую версию среды выполнения. При этом первый элемент указывает наиболее предпочтительную версию, а последний элемент — наименее предпочтительную версию.

Совместимость версий компонентов

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

Из-за этого ограничения гарантии совместимости особенно важны для компонентов. Начиная с .NET Framework 4, можно задать степень, с которой компонент предположительно останется совместимым в нескольких версиях, применив для этого компонента атрибут System.Runtime.Versioning.ComponentGuaranteesAttribute. Этот атрибут может использоваться разными средствами для обнаружения возможных нарушений гарантии совместимости в будущих версиях компонента.

Обратная совместимость и платформа .NET Framework 4

Платформа .NET Framework 4 обратно совместима с приложениями, которые были созданы с использованием .NET Framework версий 1.1, 2.0, 3.0 и 3.5. Другими словами, приложения и компоненты, созданные с использованием предыдущих версий платформы .NET Framework, будут работать и в .NET Framework 4.

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

Чтобы убедиться в совместимости приложений и компонентов .NET Framework с другими версиями платформы .NET Framework, необходимо тестировать эти приложения и компоненты. Чтобы убедиться в том, что приложение или компонент успешно работает в платформе .NET Framework 4, воспользуйтесь документом .NET Framework 4 Application Compatibility Walkthrough.

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

Для приложений .NET Framework 2.0, 3.0 и 3.5

  • Обратитесь к разделу Проблемы при миграции на .NET Framework 4 в отношении любых изменений, которые могут влиять на приложение, и используйте описанный обходной путь.

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

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

  • В случае обнаружения недокументированной проблемы зарегистрируйте ошибку Microsoft Connect и обратитесь по адресу netfxcf@microsoft.com с указанием номера ошибки.

Для приложений .NET Framework 1.1

  • Обратитесь к разделу Проблемы при миграции на .NET Framework 4 в отношении любых изменений, которые могут влиять на приложение, и используйте описанный обходной путь.

  • Обратитесь к документам Changes in .NET Framework 3.5 SP1 и Changes in .NET Framework 2.0 в отношении любых изменений, сделанных в этих версиях.

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

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

  • В случае обнаружения недокументированной проблемы зарегистрируйте ошибку Microsoft Connect и обратитесь по адресу netfxcf@microsoft.com с указанием номера ошибки.

Совместимость и параллельное выполнение

Если найти подходящий обходной путь для проблемы не удается, вспомните, что платформа .NET Framework 4 работает параллельно с версиями 1.1, 2.0 и 3.5. Чтобы запустить приложение в наилучшей для него среде, можно на целевом компьютере установить соответствующую версию платформы .NET Framework. Дополнительные сведения о параллельном выполнении см. в разделе Параллельное выполнение.

См. также

Основные понятия

Новые возможности .NET Framework 4

Другие ресурсы

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

Проблемы при миграции на .NET Framework 4

Журнал изменений

Дата

Журнал

Причина

Август 2010

Отмечено, что, если поддерживаемая версия платформы .NET Framework не установлена, происходит ошибка инициализации .NET Framework.

Исправление ошибки содержимого.