引用水晶报表将ASP.NET 2005迁移到2008年发行

问题描述

|| ASP.NET网站是使用VS.NET 2005版本开发的,并使用了Crystal Reports。 现在,同样的人想要升级到VS.NET 2008,但是它显示出如下错误:   错误469无法加载文件或程序集   \'CrystalDecisions.CrystalReports.Engine,版本= 10.2.3600.0,   文化=中性,PublicKeyToken = 692fbea5521e1304 \'或其中之一   依赖性。该系统找不到指定的文件。 C:\\文件   和设置\\ Administrator \\ Desktop \\ SVSS \\ ssvs10022010123 \\ Web.Config 29 在web.config文件中,代码的编写方式类似于此错误所在的位置。
<compilation debug=\"true\">
        <assemblies>
            <add assembly=\"CrystalDecisions.CrystalReports.Engine,Version=10.2.3600.0,Culture=neutral,PublicKeyToken=692fbea5521e1304\"/>
            <add assembly=\"CrystalDecisions.ReportSource,PublicKeyToken=692fbea5521e1304\"/>
            <add assembly=\"CrystalDecisions.Shared,PublicKeyToken=692fbea5521e1304\"/>
            <add assembly=\"CrystalDecisions.Web,PublicKeyToken=692fbea5521e1304\"/>
            <add assembly=\"CrystalDecisions.ReportAppServer.ClientDoc,PublicKeyToken=692fbea5521e1304\"/>
            <add assembly=\"CrystalDecisions.Enterprise.Framework,PublicKeyToken=692fbea5521e1304\"/>
            <add assembly=\"CrystalDecisions.Enterprise.InfoStore,PublicKeyToken=692fbea5521e1304\"/>
            <add assembly=\"System.Core,Version=3.5.0.0,PublicKeyToken=B77A5C561934E089\"/>
            <add assembly=\"System.Web.Extensions,PublicKeyToken=31BF3856AD364E35\"/>
            <add assembly=\"System.Xml.Linq,PublicKeyToken=B77A5C561934E089\"/>
            <add assembly=\"System.Data.DataSetExtensions,PublicKeyToken=B77A5C561934E089\"/></assemblies></compilation>
Crystal Reports已安装(VS2008认提供)。是否需要更改参考? 请指导我如何解决此问题。     

解决方法

最好的解决方案是在服务器上安装相同的运行时。 无论如何,您可以在app.config或web.config中使用此XML:
  <runtime> 
    <assemblyBinding xmlns=\"urn:schemas-microsoft-com:asm.v1\">
      <dependentAssembly>
        <assemblyIdentity name=\"CrystalDecisions.CrystalReports.Engine\" publicKeyToken=\"692fbea5521e1304\" culture=\"neutral\"/>
        <bindingRedirect oldVersion=\"xx.x.xxxx.x\" newVersion=\"yy.y.yyyy.y\"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name=\"CrystalDecisions.Shared\" publicKeyToken=\"692fbea5521e1304\" culture=\"neutral\"/>
        <bindingRedirect oldVersion=\"xx.x.xxxx.x\" newVersion=\"yy.y.yyyy.y\"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name=\"CrystalDecisions.ReportSource\" publicKeyToken=\"692fbea5521e1304\" culture=\"neutral\"/>
        <bindingRedirect oldVersion=\"xx.x.xxxx.x\" newVersion=\"yy.y.yyyy.y\"/>
      </dependentAssembly>
      <dependentAssembly>
        ...
    </assemblyBinding>
  </runtime>
其中oldVersion是用于开发的版本,而newVersion是服务器上安装的版本     ,这是因为,.NET 2008中的水晶报表版本已更改。 您应该用新版本替换旧版本字符串,如下所示 版本= 10.2.3600.0至版本= 10.5.3700.0 在系统中查找确切版本的Crystal报表的替代解决方案是, 右键单击项目文件夹,然后选择引用。现在,选择所有晶体报告参考,然后按确定。 它应该使用正确的版本自动更新web.config文件。 (您可以在web.config中删除旧的Crystal Report参考代码)。