web.config中的多个版本的Crystal Reports

时间:2009-03-20 19:29:11

标签: c# asp.net crystal-reports web-config

在我们不使用Crystal Reports之前。在我们的项目中,我们现在已将Crystal Reports添加到我们的项目中。当我将项目转移到服务器时,它产生了一个Crystal错误。 我怀疑服务器上没有安装Crystal。然后在服务器上安装了Crystal 11。开发机器有Crystal 8.5。服务器在应用程序启动时产生此错误。

  

“无法加载文件或程序集”CrystalDecisions.ReportAppServer.ClientDoc,Version = 10.2.3600.0,Culture = neutral,PublicKeyToken = 692fbea5521e1304'或其中一个依赖项。系统找不到指定的文件。“

  • 是否可以有两个版本 web.config中的引用? (即水晶 8.5& 11)

  • 如何解决这个问题?

在开发环境中使用C#,Visual Studio 2005和Crystal Reports 8.5。

6 个答案:

答案 0 :(得分:1)

最佳解决方案是在服务器上安装相同的运行时 无论如何,您可以在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 是服务器上安装的版本

答案 1 :(得分:0)

这只是一个版本冲突,因为您的开发机器正在使用早期版本,当您尝试在服务器上运行时,它正在寻找该版本的.DLL文件。您可能最好确保在您的开发机器和服务器上安装相同的版本,然后使用Crystal 11中的DLL文件确保您的web.config。

现在的快速入侵是在服务器上找出正确的文件版本,并在web.config中输入该数字。

编辑:另一种选择是在服务器上更改web.config中的.DLL版本,这基本上就是其他人所说的。问题在于,每次部署时都必须不断更改...这会非常烦人。另外,您在开发机器上进行测试并不是真正有效,因为您正在测试不同的程序。你几乎可以保证看到你在DEV中永远看不到的错误,因为版本之间的某些东西发生了变化。

是否有一些原因导致您无法在开发PC上安装Crystal 11?

答案 2 :(得分:0)

您可能需要在项目中添加对该DLL的引用(或以其他方式将其放入/ bin文件夹中。

答案 3 :(得分:0)

错误消息说明了这一点,您的服务器是否具有版本10.2.3600.0的CrystalDecisions.ReportAppServer.ClientDoc以及GAC中的匹配令牌,或者您的应用程序或网站可以找到它?

听起来您需要在服务器上进行配置更新。

答案 4 :(得分:0)

不,不可能引用同一命名程序集的两个不同版本。

使这项工作的一种方法是拥有两个不同的web.config文件。一个用于开发,另一个用于生产。作为部署的一部分,只需使用文件的prod版本即可。如果您的部署是自动化的,这应该就像删除dev web.config并在复制文件后重命名生产版本一样简单。

答案 5 :(得分:0)

10.2.3600.0是Visual Studio 2005中包含最新补丁的Crystal Reports版本。

您需要在服务器上安装.net 2.0的Crystal Reports运行时。您可以从开发计算机

获取运行时安装程序

64 C:\ Program Files(x86)\ Microsoft Visual Studio 8 \ Crystal Reports \ CRRedist \ X64

86 C:\ Program Files(x86)\ Microsoft Visual Studio 8 \ SDK \ v2.0 \ BootStrapper \ Packages \ CrystalReports