如何解决Crystal Report版本冲突并使它们并排工作?

时间:2012-03-17 10:16:07

标签: visual-studio-2010 crystal-reports crystal-reports-10

我安装了VS-2005和VS-2010。由于Crystal Reports作为VS-2010的单独下载提供,我下载并安装。我的旧项目是在使用Crystal Reports 10.0版的VS-2010中。新项目位于VS-2010中,其Crystal Reports版本为13.0。

我在VS-2010中用一个报告做了一个小应用程序。当我尝试运行此项目时,它会显示错误:

The type 'CrystalDecisions.Web.CrystalReportViewer' exists in both 'c:\Windows\assembly\GAC_MSIL\CrystalDecisions.Web\10.2.3600.0__692fbea5521e1304\CrystalDecisions.Web.dll' and 'c:\Windows\assembly\GAC_MSIL\CrystalDecisions.Web\13.0.2000.0__692fbea5521e1304\CrystalDecisions.Web.dll'

The indirectly-referenced assembly 'BusinessObjects.Licensing.KeycodeDecoder, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304' could not be found. This assembly is not required for analysis, however, analysis results could be incomplete. This assembly was referenced by: C:\Windows\assembly\GAC_MSIL\CrystalDecisions.CrystalReports.Engine\13.0.2000.0__692fbea5521e1304\CrystalDecisions.CrystalReports.Engine.dll.

我无法卸载旧的Crystal Reports(即版本10)。如何使这些工作并排,以及 GAC web.config 文件中需要进行哪些更改。

1 个答案:

答案 0 :(得分:6)

这是Crystal Reports的known issue。它与GAC中的并排版本不相符。

来自SAP

  

由于每个版本的Crystal Reports都有自己特定的运行时   必须正确部署,部署的运行时至关重要   与Visual Studio的Crystal Reports程序集一致   在项目中引用.NET。

使用gacutil /u /f强制卸载旧的Crystal Reports程序集。

如果不允许,则必须卸载Crystal Reports for Visual Studio 2005。

您仍然可以通过将程序集复制到共享文件夹(例如'.. \ 3rdParty \ 10.5.3700.0'并对该文件夹而不是GAC进行文件引用)来保持并行项目。 诀窍是通过commnadline从GAC复制Crystal Reports程序集:

> copy c:\WINDOWS\assembly\GAC_MSIL\CrystalDecisions.CrystalReports.Engine\10.5.3700.0__692fbea5521e1304\CrystalDecisions.CrystalReports.Engine.dll c:\dev\3rdParty\10.5.3700.0

要发现部署了哪些程序集:

gacutil /l

然后,您只需从GAC卸载复制的程序集。