Почему .net 4.0 и .net 2.0 CLR могут существовать на одной машине? - PullRequest
3 голосов
/ 16 апреля 2010

У меня есть основное сомнение в том, как мы можем иметь оба CLR на одной машине. Если это возможно, когда я ссылаюсь на несколько dll из 4.0 и устанавливаю пул приложений на 2.0, почему не могу запустить веб-сайт (я получаю ошибки). Когда мы ссылаемся на dll из web.config, это означает, что он ищет GAC, когда этот конкретный 4.0 dll доступна в GAC. Почему она не загружается (почему она не загружается) .. Пожалуйста, проясните мои сомнения

Ответы [ 3 ]

5 голосов
/ 16 апреля 2010

Да, оба CLR могут находиться на одном компьютере - фактически, .NET 4 позволяет иметь один и тот же процесс , на котором одновременно размещены оба CLR!

Разные сборки в GAC будут иметь разные версии, поэтому, если ваши ссылки указывают версию, CLR загрузит соответствующую. Конечно, вам нужно убедиться, что у вас есть соответствующий CLR, загружающий соответствующую сборку; в то время как v4 CLR может загружать сборки v2 (с некоторыми ограничениями, IIRC), вы не должны пытаться загрузить сборку v4 из v2 CLR.

Что касается того, почему у вас проблемы - это действительно невозможно сказать без дополнительной информации. (Каждый раз, когда вы задаете вопрос и у вас появляется ошибка, скажите, что это за ошибка .)

3 голосов
/ 16 апреля 2010

Пулы приложений настроены для запуска определенной версии платформы. Он использует эту информацию, чтобы определить, какую сборку загрузить из GAC.

Невозможно загрузить сборку .NET 4 из приложения / процесса 2.0.

Вы можете установить 1.0, 1.1, 2, 3, 3.5 и 4 все вместе.

1 голос
/ 25 августа 2011

Да, это стало возможным благодаря 4.0 ядро ​​dll как CLR.dll И 2.0 как mscorwks.dll

Так что, если вы захватите дамп процесса с обоими загруженными, Вы увидите lmvm mscorwks от 2.0 и lmvm clr от 4.0

Но вы все равно не можете объединить 1.1 и 4.0 в одном процессе

http://geekswithblogs.net/sdorman/archive/2008/11/10/clr-4.0-in-process-side-by-side-clr-hosting.aspx

Спасибо JAS

...