在仅具有4.0框架的机器上参考2.0库运行.NET 4.0应用程序

时间:2012-01-14 18:32:57

标签: c# .net clr version

试图复制这将是一个真正的痛苦,所以我希望有人能快速回答......

假设我有一个.NET 4.0应用程序,引用了.NET 2.0库(在本例中为SharpZipLib)。这当然可以在安装了.NET 2.0和4.0的普通机器上正常工作。

如果运行此应用程序的服务器只有.NET 4.0而不是2.0(或3.0 / 3.5等),那么我需要做些什么才能让.NET 2.0库正常运行?

从我读过的内容来看,我似乎可以为supportedRuntime添加配置设置,但我并不完全明白究竟是什么。

配置设置是否有效,或者只有.NET 4.0库在此环境中运行?

(这是一个假设的环境 - 我不计划自己的服务器使用4.0而不是2.0,但如果某人疯狂到可以做到这一点,我希望能够支持它们。)

由于

4 个答案:

答案 0 :(得分:7)

CLR可以在.net 4.0框架中加载旧程序集。

这是一个很好的阅读:

http://msdn.microsoft.com/en-us/magazine/ee819091.aspx

编辑:文章更新引用。特别注意粗体

  

.NET Framework 4运行时 - 以及所有未来的运行时 - 将能够   彼此在进行中。虽然我们没有支持这个   对于较旧的运行时(1.0到3.5)的功能,我们确实做到了   4及以上版本将能够在任何一个旧版本的进程中运行   运行。 换句话说,您将能够加载4,5和2.0   相同的过程,但你将无法加载1.1和2.0   同样的过程。 .NET Frameworks 2.0到3.5都在2.0上运行   运行时因此彼此没有冲突,如图所示   2。

答案 1 :(得分:6)

来自http://neilblackburn.blogspot.com/2009/10/net-framework-40-backward-compatibility.html(以及,传递地,http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2009/08/03/installing-net-framework-v4-0-and-running-net-2-0-3-0-3-5-3-5sp1-applications.aspx):

  

现在,我知道您不能只使用3.5 Service Pack 1应用程序   并在V4.0 CLR上运行它。它需要V2.0 CLR或重新配置   一个<supportedRuntimes/>标记,以便让应用程序弯曲运行   V4.0 CLR和弯曲可能是你不想要的东西   要做。

答案 2 :(得分:2)

来自bryanmac答案(In-Process Side-by-Side)中的链接:

  

这意味着如果重新编译应用程序以针对.NET Framework 4运行时运行,并且仍然具有针对.NET 2.0构建的依赖程序集,那么这些依赖项也将加载到.NET 4运行时。

然而,这可能意味着由于在不同的运行时运行而可能存在错误。

答案 3 :(得分:1)

如果您拥有SharpZipLib的源代码,则可以将其重建为.NET 4.0