Ответ выше неверен.Вы получаете бок о бок с полными рамками.Приложение .Net 2 (обратите внимание, что это означает, что EXE, а не библиотека) не будет автоматически продвигаться к .Net 4.
Но если приложение .Net 4 загружает сборку .Net 2, оно загружается в ту же среду выполнения (иначе как они могли делиться информацией).Сборка .Net 2 загружается в среду выполнения .net 4 с использованием режима совместимости, который, как предполагается, сводит к минимуму разрыв изменений (в основном для изменений безопасности в .Net 4).
Сборка .Net 2 не может ссылаться наСборка .Net 4, потому что она не будет иметь функций.
ЕДИНСТВЕННОЕ исключение из этого, о котором я знаю, - это если вы загружаете сборку .Net из приложения C ++.Приложение C ++ может загружать и размещать две среды выполнения.Может быть загружена сборка .Net 2 и сборка .Net 4, но они не смогут напрямую общаться друг с другом.Вот как CLR Procs работает в SQL Server.У вас могут быть .Net 2 CLR Proc и .Net 4 CLR Proc, которые не взаимодействуют, но оба загружаются на сервер.
Недавно в журнале MSDN была замечательная статья о размещении .Net framework., но я не могу найти это сейчас.Возможно, кто-то другой может опубликовать ссылку.
Таким образом, вы сможете без проблем загрузить практически любую сборку .Net 2 в исполняемый файл .Net 4.Единственные проблемы, которые я видел, связаны с разрешениями безопасности.