Как обеспечить выполнение управляемого кода под .net 2.0 в процессе .net 4 (SxS)

В некоторых статьях люди упоминают «явный запуск sxs». Это действительно возможно? Я прочитал несколько статей на эту тему:
http://msdn.microsoft.com/en-us/magazine/ee819091.aspx
http://blogs.msdn.com/b/dotnet/archive/2009/06/03/in-process-side-by-side-part1.aspx
http://msdn.microsoft.com/en-us/library/ee518876.aspx

но до сих пор не ясно, возможно ли принудительно выполнить часть управляемого кода в более старой версии .net из процесса .net 4.

Пока что похоже, что единственные COM-компоненты могут требовать более старой версии .net, поэтому .net 4 clr автоматически запускает выполнение SxS. Может ли кто-нибудь пролить свет на этот вопрос?


person Puterdo Borato    schedule 30.01.2012    source источник


Ответы (1)


Используя сгенерированный компилятором хост CLR, нет, я не думаю, что вы можете это сделать.

Я полагаю, что вам придется разместить CLR самостоятельно и явно указать, какая CLR вы хотели загрузить при вызове CorBindToRuntimeEx. Итак, вы хотите загрузить одну среду CLR, указав v2, а другую — v4.

Раньше вообще нельзя было этого делать, эффектно падал.

Вы не можете сказать: «О, я просто хочу, чтобы этот метод работал в CLR v2». Ваш «управляемый код» будет находиться в другом домене приложения, поэтому вам придется выполнять какое-то взаимодействие между двумя доменами приложений, например удаленное взаимодействие.

person vcsjones    schedule 30.01.2012