Мне нужно прояснить два сценария:
Исполняемый файл, скомпилированный с помощью .NET 3.5, должен использовать библиотеку, скомпилированную с помощью .NET 1.1, и библиотека должна работать в среде выполнения 1.1.
Исполняемый файл, скомпилированный с помощью .NET 1.1, должен использовать библиотеку, скомпилированную с помощью .NET 3.5.
Я не могу найти надежный источник, утверждающий, что невозможно загрузить две версии среды выполнения .NET, и документация Microsoft по этому поводу очень расплывчата.





Нет, вы не можете дважды загрузить среду CLR в один и тот же процесс. См. Документацию для Хостинг CLR
As with earlier versions of the runtime, the CorBindToRuntimeEx function initializes the runtime. You can choose which version of the runtime to load, but a process canhost only one version.
Для случая № 1 есть ли какая-то конкретная причина (например, критические изменения), по которой библиотека должна размещаться в среде выполнения 1.1? Можно ли открыть библиотеку через веб-службу, скомпилированную в 1.1, и вместо этого указать исполняемый файл на веб-службу? (Или какой-нибудь другой метод удаленного взаимодействия, чтобы библиотека работала в собственном процессе?)
В случае № 2 можно ли перекомпилировать приложение 1.1 под 2.0 / 3.5, чтобы оно могло находиться в том же процессе?
В любом случае, Роб Уокер прав (и я проголосовал за) - вы просто не можете разместить две версии среды выполнения в одном процессе. Так что вам нужно как-то обойти это. Я полагаю, что в обоих случаях исходный код должен быть доступен, поэтому перекомпиляция и повторное тестирование должны работать.
Джон, вы правы, нам придется исправить это, поскольку изменение кода нежелательно. Я просто хотел убедиться, что мы не упускаем из виду более простое решение.
.NET 4 обещает включить хостинг разных версий CLR в одном процессе с помощью В процессе работы бок о бок.
Вы можете, если используете API хостинга .Net 4.0, а не API хостинга .Net 2.0 ...