2013-05-15 4 views
6

У нас есть приложение, написанное на .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).Не удалось загрузить файл или сборку «CrystalDecisions.CrystalReports.Engine»/Windows 2012 server

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

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

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

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

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

Благодаря Tomas


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


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

+1

Хорошо, решил. Используя «gacutil/lr», я понял, что CR, используемый для сборки, был для VS 2008 года. Установка старых режимов работы решила эту проблему. – TomKyblik

ответ

5

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

.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 установлен в ложь. Переключив это на истинную способность решить проблему, мы этого не пробовали.

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

.csproj после

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

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

1

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

1

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

  • Сначала только unistall пакет с использованием NuGet пакета
  • Во-вторых, установить снова используя NuGet пакет
  • И последний должен опубликовать и загрузить в VPS, и это сработает.
Смежные вопросы