Возможно ли загрузить две версии среды выполнения .NET в одном процессе?

StackOverflow https://stackoverflow.com/questions/201663

Вопрос

Есть два сценария, которые мне нужно прояснить:

  1. Исполняемый файл, скомпилированный с .NET 3.5, должен использовать библиотеку, скомпилированную с .NET 1.1, и библиотека должна выполняться во время выполнения 1.1.

  2. Исполняемый файл, скомпилированный с .NET 1.1, должен использовать библиотеку, скомпилированную с .NET 3.5.

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

Это было полезно?

Решение

Нет - вы не можете загрузить CLR в один и тот же процесс дважды.Смотрите документацию для CLR-Хостинг

Как и в предыдущих версиях среды выполнения , функция CorBindToRuntimeEx инициализирует среду выполнения.Вы можете выбрать, какую версию среды выполнения загружать, но процесс может размещайте только одну версию.

Другие советы

.NET 4 обещает включить размещение различных версий CLR в одном и том же процессе с помощью В процессе работы Бок о бок.

Для случая № 1, есть ли какая-либо конкретная причина (скажем, критические изменения), которая требует размещения библиотеки во время выполнения 1.1?Можно ли предоставить библиотеку через скомпилированный веб-сервис 1.1 и вместо этого указать исполняемый файл на веб-сервис?(Или какой-то другой метод удаленного взаимодействия, чтобы получить библиотеку в своем собственном процессе?)

Для случая № 2, возможно ли перекомпилировать приложение 1.1 под 2.0 / 3.5, чтобы оно могло находиться в том же процессе?

В любом случае, Роб Уокер прав (и я поддержал) - вы просто не можете разместить 2 версии среды выполнения в одном процессе.Так что вам нужно как-то это обойти.Я бы предположил, что в обоих случаях исходный код должен быть доступен, поэтому должны выполняться перекомпиляция и повторное тестирование.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top