【问题标题】:Multiple versions of .NET CLR running concurrently.NET CLR 的多个版本同时运行
【发布时间】:2010-10-12 16:40:33
【问题描述】:

假设我有一个在 Windows 下运行的 .NET 用户应用程序 (.exe),它是在 .NET Framework 版本 3.0 (VS2008) 中编译的。如果该应用程序加载另一个使用 .NET Framework 版本 2.0 (VS2005) 在不同计算机上编译的 .NET 程序集 (.dll),加载的程序集是否会使用现有的 3.0 运行时(将以向后兼容模式运行)?或者 .NET Framework 2.0 运行时是否会加载到系统的进程空间中,而我们现在有两个 .NET 运行时同时运行?

断言:这不是使用 VS2008 多目标。

【问题讨论】:

    标签: .net assemblies clr


    【解决方案1】:

    没有 .NET 3.0 CLR。 .NET 3.0 和 3.5 都使用 .NET 2.0 CLR。​​

    当然,如果您的 .NET 3.0 应用程序使用 .NET 3.0 功能,则需要安装 .NET 3.0。

    【讨论】:

    • 哦,太好了,我没有意识到这一点。所以 3.0 和 3.5 只是一堆可以在代码中使用的新程序集(基础等)。
    【解决方案2】:

    如果它在同一个进程空间中,如您所概述的,它将在 3.0.0 下运行。如果您希望启动两个不同的 CLR,则必须创建一个服务边界(Web 服务或 WCF 在这里工作正常 - 显然不是 2.0 的 WCF)并从另一个应用程序调用该服务。

    【讨论】:

    • Gregory,当您说两个不同的 CLR 时,您是指 .NET 1.1 CLR 吗?因为在那之后,还有 .NET 2.0 CLR 和未发布的 .NET 4.0 CLR。​​
    • 是的,从技术上讲,只有 2.0 和 3.0 和 3.5 位于顶部。但它比这更复杂一点,因为从技术上讲,有一些库可以放在 2.0 之上,同时为 3.5 安装了已发布的库。想到了 AJAX。
    • 但是,从技术上讲,您有 1.0、1.1 和 2.0 作为三个基本库。
    【解决方案3】:

    .NET 运行时版本通常是向后兼容的,因此 3.0 运行时将承载 2.0 程序集(更不用说 3.0 与 2.0 基本上是相同的运行时)。无论如何,不​​能将两个版本的 CLR 加载到同一个进程中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-10
      • 1970-01-01
      • 2018-04-27
      • 1970-01-01
      • 2016-05-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多