Как разрешить конфликт версий Crystal Report и заставить их работать параллельно?
У меня установлены VS-2005 и VS-2010. Поскольку Crystal Reports доступен для отдельной загрузки для VS-2010, я загрузил его и установил. Мои старые проекты были в VS-2010, который использует Crystal Reports версии 10.0. Новые проекты в 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 ответ
Это известная проблема с Crystal Reports. Это не очень хорошо с параллельными версиями в GAC.
Из SAP:
Поскольку каждая версия Crystal Reports имеет свое собственное определенное время выполнения, которое должно быть правильно развернуто, очень важно, чтобы развернутое время выполнения соответствовало сборкам Crystal Reports для Visual Studio .NET, указанным в вашем проекте.
использование gacutil /u /f
принудительно удалить старые сборки Crystal Reports.
Если это не позволяет, необходимо удалить Crystal Reports для Visual Studio 2005.
Вы по-прежнему можете сохранять параллельные проекты, копируя сборки в общую папку (например, '..\3rdParty\10.5.3700.0' и делая ссылку на файл в этой папке вместо GAC. Хитрость заключается в том, чтобы скопировать Crystal Отчеты о сборках из GAC через commnadline:
> 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.