Как разрешить конфликт версий Crystal Report и заставить их работать параллельно? - PullRequest
6 голосов
/ 17 марта 2012

У меня установлены 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 Ответ

6 голосов
/ 17 марта 2012

Это известная проблема с 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 Reports из 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.

...