我有一个基本的疑问,我们如何在同一台机器上拥有两个 CLR。如果这是可能的,当我引用几个 4.0 的 dll 并将应用程序池设置为 2.0 时,为什么我不能运行该网站(我收到错误)。当我们从 web.config 引用 dll 时,这意味着它在特定 4.0 时搜索 GAC dll在GAC中可用为什么不加载(为什么不加载)..请澄清我的疑问
1567 次
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
谢谢 JA
于 2011-08-25T12:37:04.040 回答