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

RKh*_*RKh 7 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.
Run Code Online (Sandbox Code Playgroud)

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

KMo*_*raz 6

这是Crystal Reports的一个已知问题.它与GAC中的并排版本不相符.

来自SAP:

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

使用gacutil /u /f强行卸载旧的Crystal Reports组件.

如果它不允许您必须卸载Crystal Reports for Visual Studio 2005.

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

> 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
Run Code Online (Sandbox Code Playgroud)

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

gacutil /l
Run Code Online (Sandbox Code Playgroud)

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