由vs 2005升级到vs 2008后,运行时出现错误:未能加载文件或程序集“System.Web.Extensions, Version=2.0.0.0, 怎么办?
之前,把一个项目由vs 2005升级到vs 2008,编译的时候,除了在页面中引用水晶报表的版本有点错误,其他没有出现错误。在升级的过程中,就已经提示说“必须将水晶报表的版本由2005升级到2008,否则功能将无法使用”,所以,编译的时候错误就很正常了,只要把原来的控件删除掉,重新拉一个控件,就可以了。
可是,在运行以后,打开含有水晶报表控件的页面时,却出现了以下的错误:
未能加载文件或程序集“System.Web.Extensions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040),于是我上网找,搜了好久才搜到两篇相关的文章,一篇还是英文的,需要借助翻译软件才能看懂个大概。下面是我试过可以用的代码,是加在web.config中的:
<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <publisherPolicy apply="no"/> <dependentAssembly> <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35" culture="neutral"/> <bindingRedirect oldVersion="2.0.0.0" newVersion="1.0.61025.0"/> </dependentAssembly> </assemblyBinding> </runtime> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <publisherPolicy apply="no"/> <dependentAssembly> <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35" culture="neutral"/> <bindingRedirect oldVersion="2.0.0.0" newVersion="1.0.61025.0"/> </dependentAssembly> </assemblyBinding> </runtime>
oldVersion是当前在用的System.Web.Extensions的版本,我还是用2.0,所以这里是2.0.0.0,如果你用的是3.5.0.0,那就要改为oldVersion = 3.5.0.0,newVersion是用vs2005时的System.Web.Extensions的版本。
原文:The above configuration tells .NET to use System.Web.Extensions version 1.0.61025 instead of version 2.0.0.0. While the above does pose to be a solution to the problem, it is concerning that this would be needed at all.
翻译:上面的配置告诉。NET中使用System.Web.Extensions程序版本1.0.61025而不是版本2.0.0.0。虽然上述不构成解决问题的方法,它是有关,这将是需要的。
现在,程序可以正常使用水晶报表了。在服务器部署的时候,还需要安装CRRedist2008_x86.msi,CRRedist2008_x86_chs.msi(汉化,不是必须的)。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/caobingyi/archive/2010/04/20/5506320.aspx
http://geekswithblogs.net/jwhitehorn/archive/2007/07/03/113660.aspx