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

Joe*_*nos 11 .net c# 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不服务器,但如果有人是够疯狂去做,我希望能够支持他们).

谢谢

bry*_*mac 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所示.

  • 在哪里说明4.0运行时包含2.0运行时?不同的是,在4.0(及更高版本)中,您可以在同一进程中激活多个运行时. (3认同)

Chr*_*ain 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上运行,并且弯曲可能是您不想做的事情.