微软发布的dotnetfx2.0是相当成功的开发框架,由此产生了大量基于.NET2.0的应用,微软后来发布的dotnetfx3.0及dotnetfx3.5都是对2.0的扩展,并添加了很多新的特性(如:linq、wpf、wcf、wwf、Lambda、类型推断及简化的语法等),但碍于庞大的dotnetfx3.5安装部署都十分困难,dotnetfx2.0应用依然十分普遍。几个月以前微软发布了dotnetfx4.0,其强大的功能让dotnetfx2.0的优势消失殆尽,很多新的应用开发已经从.NET4.0开始了。由于.NET4.0使用全新的CLR,因此基于.NET2.0的程序集并不能直接在.NET4.0框架下运行,此时大量的基于dotnetfx2.0应用的升级就成了问题。
虽然不能直接向下兼容,但微软已经提供了比较好的兼容性解决方案:运行时目标版本激活策略。基于.NET2.0的应用程序和程序集只要在配置文件中声明运行时版本即可在新的框架下运行。对于此解决方案的官方说明在http://msdn.microsoft.com/zh-cn/library/bbx34a2h.aspx。
设置方法:在缺省配置文件的根元素configuration下添加以下声明( 桌面应用程序为App.config、Web应用程序为Web.config):
1: <startup useLegacyV2RuntimeActivationPolicy="true">
2: <supportedRuntime version="v4.0"/>
3: startup>
这里Web应用程序的环境配置要复杂一些。当然首先要安装dotnetfx4.0,如果是先安装了IIS,则需要手动注册IIS,注册命令:
%windows%\Microsoft.NET\Framework\<版本号>\aspnet_regiis.exe -i
如果是服务器版操作系统,则IIS中还有“Web服务扩展”选项,在选项中启用ASP.NET v4.0.30319服务扩展;然后在站点的属性中修改ASP .NET版本为v4.0.30319,至此,基于.NET2.0的应用程序就可以在.NET4.0下和WCF、linq等新功能一起运行了。