我安装了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 文件中需要进行哪些更改。
答案 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卸载复制的程序集。