【问题标题】:Running .NET 4.0 application from .NET 3.5 application从 .NET 3.5 应用程序运行 .NET 4.0 应用程序
【发布时间】:2011-08-10 08:20:54
【问题描述】:

我们有 2 个使用 .NET 3.5 和 .NET 4.0 编写的桌面主机应用程序。 我们有 3 个在 .NET 3.5 上编写的加载项。 一个加载项是在 .NET 4 上编写的 - “NET4APP”。

我们希望使用 .NET 3.5 主机应用程序为所有插件集成主机应用程序和插件。

它们可以与 MSI 软件包任意组合。

如果客户没有 .NET 4 并且不使用 NET4APP,我们不希望他们使用它。

有没有办法将 .NET 4 应用程序(或 .NET 4 运行时)加载到 .NET 3.5 应用程序中?

【问题讨论】:

  • 我不明白。如果客户没有 .NET4,您希望如何加载 .NET4 运行时?
  • 如果客户不想使用NET4APP,我们不应该让他安装.NET 4.0。但是应该为使用 NET4APP 的客户提供与 .NET 3.5 应用程序的集成/统一体验。

标签: .net clr integration host


【解决方案1】:

无法在 .net 3.5 运行时(实际上是 .net 2.0 运行时)下运行 .net 4.0 应用程序。如果是 .net 3.5 应用程序,您可以在 2.0 运行时下运行它,因为 .net 3.5 应用程序在 .net 2.0 运行时下运行。但是会有问题,这种方式很危险。如果你想运行 .net 4.0 应用程序,你必须使用 .net 4.0 运行时,别无选择。或者您必须将其重写为 .net 3.5。

我们不得不将项目的某些部分从 .net 3.5 重写为 .net 2.0 RTM,因为我们的一些客户没有安装 .net 3.5,其中一些甚至没有安装 2.0 SP1,所以我们将我们的产品重写为与 .net 2.0 RTM 兼容。我们仍然使用 .net 3.5 的一些功能,将一些 .net 3.5 程序集与我们的产品一起分发。实际上这不是问题,因为我们仍然可以使用扩展方法、lambdas、linq-to-objects。而且我敢肯定,您退回到 .net 3.5 运行时不会有任何问题。从 .net 3.5 退回到 .net 2.0 更痛苦 :)

【讨论】:

    【解决方案2】:

    没有;但是,您应该在 .NET 3.5 中编译您的 .NET 4.0 应用程序,看看会发生什么。有可能您没有使用 4.0 特有的任何东西,只需将其编译成 3.5。

    【讨论】:

      【解决方案3】:

      使用 .NET4 的客户,您可以简单地在 .NET4 下运行整个程序。如果您提供两种设置(一种带有 NET4APP,一种没有),每个人都会很高兴。

      【讨论】:

      • 似乎我们编写了 C++ 加载程序,它在启动期间加载 CLR 4 或 2。我们的 .NET 3.5 加载项在 CLR 4.0 存在时运行。只有 CLR 2 时,不会加载需要 CLR 4.0 的加载项。
      【解决方案4】:

      如果客户(或机器)没有安装 .Net 4 运行时,您将无法加载它,您是否尝试在 .Net 3.5 下构建您的 .Net 4 应用程序?您可能没有使用特定于 .Net 4 的组件。

      【讨论】:

        猜你喜欢
        • 2011-05-20
        • 2011-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-07
        • 2011-04-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多