В ситуации, которую вы описали в вопросе, все будет просто работать без проблем.
Приложение .NET 4.0 загрузит библиотеку .NET 2.0 непосредственно в среду выполнения .NET 4.0.Он не будет использовать параллельное выполнение, если вы явно не попросите его об этом.В Интернете есть много дезинформации или неясных утверждений об этом, поэтому будьте осторожны при оценке прочитанного.
Я наконец-то наткнулся на эту статью , которая подтверждает то, что говорит Джон Скит вего ответ.В частности, в статье объясняется (выделение добавлено):
In-Proc SxS не решает проблемы совместимости, с которыми сталкиваются разработчики библиотек. Любые библиотеки, непосредственно загруженные приложением - либо с помощью прямой ссылки, либо с помощью Assembly.Load - продолжит загрузку непосредственно в среду выполнения и в AppDomain приложения, загружающего его.Это означает, что если приложение перекомпилируется для запуска в среде выполнения .NET Framework 4 и все еще имеет зависимые сборки, построенные для .NET 2.0, эти зависимости также будут загружаться в среде выполнения .NET 4. Поэтому мы по-прежнему рекомендуем тестироватьваши библиотеки против всех версий [фреймворков], которые вы хотите поддерживать.Это одна из причин, по которой мы продолжаем поддерживать наш высокий уровень обратной совместимости.
Но если вам интересны еще более мелкие детали, стоит упомянуть, что один изНовые функции, представленные в версии 4.0 CLR, - это возможность одновременно запускать несколько версий среды выполнения из одного процесса.Это называется «В процессе параллельного выполнения» (или «Inproc SxS», если вы очень крутой) и является очень мощным инструментом.Вы можете прочитать больше об этом здесь в блоге команды CLR.
Вот несколько симпатичных картинок для демонстрационных целей:
Примечаниемодель «слоеного пирога», которая использовалась для создания выпусков .NET 3.0 и 3.5 поверх .NET 2.0.Это означает, что все они будут работать бок о бок без каких-либо проблем.Но изоляция других версий создаст проблему.
Однако, как упоминалось выше, .NET 4.0 решает эту проблему с помощью параллельного выполнения:
Конечно, это в основном применимо к ситуациям, связанным с COM и взаимодействием с внешними приложениями, такими как Outlook, но это все еще очень полезная функция.
Но в любом случае, вы не должны видеть никаких проблем с этим подходом, с совместимостью, производительностью или чем-то еще.