2011-04-21 236 views
2

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

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

它们可以与MSI包捆绑在一起。

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

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

+4

我不明白。如果客户没有.NET4,那么您如何期望加载.NET4运行时? – 2011-04-21 14:02:14

+0

如果客户不想使用NET4APP,我们不应该让他安装.NET 4.0。但是使用NET4APP的客户应该为.NET 3.5应用程序提供集成/统一的体验。 – 2011-04-21 16:18:53

回答

2

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

+0

看来我们写的C++ loader在启动时加载了CLR 4或2。我们的.NET 3.5加载项在CLR 4.0存在时运行。只有CLR 2时才加载需要CLR 4.0的加载项。 – 2011-05-05 20:12:58

3

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

1

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

4

无法在.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程序集分发给我们的产品。其实这不是问题,因为我们仍然可以使用扩展方法lambda,linq-to-objects。我敢肯定,你将退回到.net 3.5运行时没有任何问题。从.net 3.5退到.net 2.0更加痛苦:)

相关问题