Не удалось загрузить файл или сборку «CrystalDecisions.CrystalReports.Engine» / сервер Windows 2012

у нас есть приложение, написанное на .NET 4.0, которое использует этот SAP Crystal Reports. В то время как та же сборка (x86) отлично работает в Windows 2003/2008 (оба x86/x64) с установленной платформой .NET 4.0 (x86) и установленными средами выполнения CrystalReports (скачанными со страниц SAP http://scn.sap.com/docs/DOC-7824), используя версию 13.0.1.x (32bit_13_0_1.msi).

Когда то же самое установлено на сервере MS 2012 (x64), уже предустановлен .NET framework 4.5, поэтому я не смог установить .NET 4.0, однако похоже, что он обратно совместим, потому что приложение работает правильно , за исключением части Crystal Reports, где приложение создает исключение.

Не удалось загрузить файл или сборку «CrystalDecisions.CrystalReports.Engine, версия 10.5.3700.0, культура=нейтральная, PublicKeyToken=blahblah» или одну из ее зависимостей. Системе не удается найти указанный файл.

Конечно, среды выполнения установлены, но по какой-то причине наше приложение не может распознать эти библиотеки DLL. Лично я не думаю, что это проблема сборки, так как он работает правильно с той же конфигурацией на сервере 2003/2008.

У нас установлена ​​только релизная версия, поэтому нет доступных опций отладки и не установлен VS.

По сути, мы просто проводим некоторые тесты, правильно ли работает приложение на сервере 2012, но решить эту проблему кажется невозможным. Я провел часы в Google безрезультатно. Так что любая идея, что проверить, высоко ценится :)

Спасибо, Томас.


Редактировать


Решение: установить старые среды выполнения 2008 года.
Основная причина: на нашей сборочной машине установлены обе среды выполнения (нам также необходимо поддерживать более старые версии). В файлах proj сборки CR не привязаны к конкретной версии, только по имени. Таким образом, в процессе сборки использовалась самая низкая соответствующая сборка от GAC, и, следовательно, также необходимо было установить CR 2008. Решение состоит в том, чтобы ссылаться на сторонние сборки в файлах проекта также по версии, чтобы принудительно использовать более новые.


person TomKyblik    schedule 15.05.2013    source источник
comment
Хорошо, решил. Используя gacutil /lr, я понял, что CR, используемый для сборки, был для VS 2008. Установка более старых сред выполнения решила эту проблему.   -  person TomKyblik    schedule 16.05.2013


Ответы (3)


Мы столкнулись с той же проблемой, однако в нашем проекте была указана версия. Также у нашего проекта не было сильного имени. Строгие имена сборок сделают это не проблемой.

.csproj до

<Reference Include="CrystalDecisions.ReportSource, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304, processorArchitecture=MSIL">
     <SpecificVersion>False</SpecificVersion>     <HintPath>..\..\..\..\..\Workspace\SharedLibraries\trunk\Lib\CrystalDecisions.ReportSource.dll</HintPath>
   </Reference>

Обратите внимание, что для параметра SpecificVersion установлено значение false. Переключение этого на true могло бы решить проблему, мы этого не пробовали.

Путь подсказки либо не найден, либо имеет более старую версию. Если он не будет найден, он захватит первую dll Crystal, найденную в GAC, которая является версией 10.5.

.csproj после

<Reference Include="CrystalDecisions.ReportSource, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304, processorArchitecture=MSIL" />

Это заставляет сборку работать с правильной версией.

person Chuck Conway    schedule 04.12.2013

Другим решением было бы обновление до Crystal Reports для Visual Studio, совместимого с VS2010+. Если вы хотите иметь возможность редактировать отчеты в последних версиях Visual Studio, это то, что вам нужно. Ваше решение по установке старой среды выполнения решает проблему без изменения решения, в то время как установка нового кристалла требует обновления всех отчетов в решении.

person kristianp    schedule 05.01.2015

Я решил эту ошибку сборки:

  • Сначала только пакет удалить с использованием пакета NuGet.
  • Во-вторых, установить снова с помощью пакета NuGet.
  • И последнее — опубликовать и загрузить на VPS и все заработает.
person Community    schedule 03.10.2016