3

我有一个基本的疑问,我们如何在同一台机器上拥有两个 CLR。如果这是可能的,当我引用几个 4.0 的 dll 并将应用程序池设置为 2.0 时,为什么我不能运行该网站(我收到错误)。当我们从 web.config 引用 dll 时,这意味着它在特定 4.0 时搜索 GAC dll在GAC中可用为什么不加载(为什么不加载)..请澄清我的疑问

4

3 回答 3

6

是的,两个 CLR 可以在同一台机器上——事实上,.NET 4 允许您让同一个进程同时托管两个 CLR!

GAC 中的不同程序集会有不同的版本,因此如果您的引用指定了版本,CLR 将加载相应的版本。当然,你需要确保你有合适的 CLR 加载合适的程序集;虽然 v4 CLR 可以加载 v2 程序集(有一些限制,IIRC),但您不应该尝试从 v2 CLR 加载 v4 程序集。

至于你为什么会遇到问题 - 如果没有更多信息,这真的不可能说。(每当您提出问题并且遇到错误时,请说出该错误是什么。)

于 2010-04-16T06:52:02.263 回答
3

应用程序池设置为运行特定版本的框架。它使用此信息来确定要从 GAC 加载的程序集。

您不能从 2.0 应用程序/进程加载 .NET 4 程序集。

您可以并排安装 1.0、1.1、2、3、3.5 和 4。

于 2010-04-16T06:51:52.050 回答
1

是的,通过将 4.0 核心 dll 作为 CLR.dll 和 2.0 作为 mscorwks.dll,这已经成为可能

因此,如果您捕获两个都已加载的进程转储,您会看到来自 2.0 的 lmvm mscorwks 和来自 4.0 的 lmvm clr

但是你仍然不能在同一个过程中结合 1.1 和 4.0

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

谢谢 JA

于 2011-08-25T12:37:04.040 回答