由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中的:
view plaincopy to clipboardprint?
<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

之前,把一个项目由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

posted @ 2010-05-25 13:41  李传涛  阅读(2265)  评论(0编辑  收藏  举报