Совместимость версий
Обратная совместимость означает, что приложение, разработанное для конкретной версии платформы, будет запускаться и в более поздних версиях этой платформы. платформа .NET Framework пытается повысить обратную совместимость: исходный код, написанный для одной версии платформа .NET Framework, должен компилироваться на более поздних версиях платформа .NET Framework и двоичных файлах, работающих в одной версии платформа .NET Framework должен вести себя одинаково в более поздних версиях платформа .NET Framework.
Совместимость версий приложений
По умолчанию приложение запускается в той версии платформы .NET Framework, для которой оно было создано. Если эта версия отсутствует и в файле конфигурации приложения не определены поддерживаемые версии, может произойти ошибка инициализации .NET Framework. В этом случае попытка запустить приложение завершится сбоем.
Чтобы определить определенные версии, в которых работает приложение, добавьте один или несколько <поддерживаемых элементовRuntime> в файл конфигурации приложения. Каждый элемент <supportedRuntime>
определяет поддерживаемую версию среды выполнения. При этом первый элемент указывает наиболее предпочтительную версию, а последний элемент — наименее предпочтительную версию.
<configuration>
<startup>
<supportedRuntime version="v2.0.50727" />
<supportedRuntime version="v4.0" />
</startup>
</configuration>
Дополнительные сведения см. в разделе Практическое руководство. Настройка в приложении поддержки .NET Framework 4 или 4.5.
Совместимость версий компонентов
Приложение может определять версию платформы .NET Framework, в которой оно запускается, однако компонент не может. Компоненты и библиотеки классов загружаются в контексте конкретного приложения и, следовательно, автоматически запускаются в той версии .NET Framework, в которой запускается это приложение.
Из-за этого ограничения гарантии совместимости особенно важны для компонентов. Начиная с .NET Framework 4, можно задать, в какой степени компонент должен оставаться совместимым в различных версиях, применив к этому компоненту атрибут System.Runtime.Versioning.ComponentGuaranteesAttribute. Этот атрибут может использоваться разными средствами для обнаружения возможных нарушений гарантии совместимости в будущих версиях компонента.
обратная совместимость
Платформа .NET Framework 4.5 и более поздних версий обратно совместима с приложениями, созданными с помощью более ранних версий .NET Framework. Иными словами, приложения и компоненты, созданные с использованием предыдущих версий платформы .NET Framework, будут без внесения изменений работать в .NET Framework 4.5 и более поздних версий. Однако по умолчанию приложения выполняются в той версии среды CLR, для которой они были разработаны, поэтому, чтобы обеспечить возможность выполнения приложения в .NET Framework 4.5 и более поздних версий, может потребоваться предоставить файл конфигурации. Дополнительные сведения см. в разделе Совместимость версий для приложений выше.
На практике эту совместимость можно нарушить на первый взгляд несущественными изменениями в платформе .NET Framework и изменениями в методах программирования. Например, улучшения в производительности в платформе .NET Framework 4.5 могут привести к состоянию гонки, которого не было в предыдущих версиях. Следует также иметь в виду, что такие действия, как использование жестко запрограммированного пути к сборкам .NET Framework, сравнение на равенство с конкретной версией платформы .NET Framework и получение значения частного поля с помощью отражения, нарушают обратную совместимость. Кроме того, каждая версия платформы .NET Framework содержит исправления ошибок и изменения, связанные с безопасностью, которые могут влиять на совместимость некоторых приложений и компонентов.
Если приложение или компонент не работает должным образом в платформа .NET Framework версии 4.5 или более поздней версии, используйте следующие списки проверка:
Если приложение было разработано для запуска в любой версии платформа .NET Framework начиная с платформа .NET Framework 4.0, ознакомьтесь с разделом "Совместимость приложений" для создания списков изменений между целевой версией платформа .NET Framework и версией, в которой работает ваше приложение.
Если приложение предназначено для .NET Framework 3.5, см. также раздел Проблемы при миграции на .NET Framework 4.
Если приложение предназначено для .NET Framework 2.0, см. также раздел Изменения в .NET Framework 3.5 SP1.
Если приложение предназначено для .NET Framework 1.1, см. также раздел Изменения в .NET Framework 2.0.
Если вы перекомпилируете существующий исходный код для запуска в платформе .NET Framework 4.5 (или ее доработанных выпусках) или разрабатываете новую версию приложения или компонента для запуска в .NET Framework 4.5 или ее доработанных выпусках на основе существующей базы исходного кода, просмотрите раздел Что устарело в библиотеке классов на предмет устаревших типов и членов и используйте описанный обходной путь. (Скомпилированный ранее код будет продолжать работать с типами и членами, которые отмечены как устаревшие.)
Если определить, что изменение в платформа .NET Framework 4.5 нарушило приложение, проверка схему среды выполнения Параметры и, в частности<, элемент AppContextSwitchOverrides>, чтобы определить, можно ли использовать параметр среды выполнения в файле конфигурации приложения для восстановления предыдущего поведения.
Если у вас возникла незадокументированная проблема, откройте проблему на веб-сайте сообщества разработчиков .NET или в репозитории GitHub Microsoft/dotnet.
Параллельное выполнение
Если найти подходящий обходной путь для проблемы не удается, помните, что платформа .NET Framework 4.5 (или один из ее доработанных выпусков) работает параллельно с версиями 1.1, 2.0 и 3.5 и представляет собой обновление "на месте", заменяющее версию 4. Для приложений, предназначенных для версий 1.1, 2.0 и 3.5, можно установить на целевом компьютере соответствующую версию .NET Framework и запускать приложение в оптимальной для него среде. Дополнительные сведения о параллельном выполнении см. в разделе Параллельное выполнение.