在只有4.0框架的计算机上运行.NET 4.0应用程序并参考2.0库

本文关键字:应用程序 NET 运行 参考 计算机 框架 | 更新日期: 2023-09-27 18:20:30

尝试复制真的很痛苦,所以我希望有人能快速回答。。。

假设我有一个.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框架的计算机上运行.NET 4.0应用程序并参考2.0库

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相同的过程,但您将无法在同样的过程.NET Framework 2.0到3.5都在2.0上运行运行时,因此彼此之间没有冲突,如图所示2.

来源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和弯曲可能是你不想要的

从bryanmac的答案中的链接(并排进行中):

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

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

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