2013-05-27 4 views
5

Простите меня, если на него ответили раньше, но я искал в Интернете и обнаружил, что только отчаянные люди задают именно мой вопрос, но никто не дает ответа, который я мог бы использовать.Log4net.dll + C# + Crystal Reports = ошибка

Я разрабатываю приложение в C# Visual Studio 2010, которое использует Crystal Reports. Я разрабатываю его на 32-битной системе. Все работает нормально.

Теперь я пытаюсь запустить его на другом компьютере, на котором установлена ​​64-битная система, установленная Crystal Reports, и возникает некоторая ужасная ошибка.

************** Tekst wyjątku ************** 
System.TypeInitializationException: Inicjator typów zgłosił wyjątek dla typu 
'CrystalDecisions.ReportSource.ReportSourceFactory'. ---> System.TypeInitializationException: 
Inicjator typów zgłosił wyjątek dla typu 'CrystalDecisions.Shared.SharedUtils'. ---> 
System.IO.FileLoadException: Nie można załadować pliku lub zestawu 

'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304' lub jednej z jego zależności. 

Простите мне какой-нибудь польский язык. Это в основном означает, что он не может найти определенную версию файла log4net.dll, которая, по-видимому, должна быть использована кем-то.

Эта проблема была описана во многих местах:

log4net not logging and throwing error

http://scn.sap.com/thread/1857957

Я понимаю, что мое приложение использует/ожидает некоторые версии этого файла и Crystal Reports установлен на 64-битной машине использует другую версию ,

Еще после просмотра в Интернете я не знаю, какие шаги я должен предпринять, чтобы исправить это.

Я был бы очень благодарен за какой-нибудь «учебник для чайников», как с этим бороться.

О, и мое приложение должно быть построено как 32 бит и работать на 64 бит. Нет возможности построить его как 64 бит, другое дело перестало бы работать :(

+0

Какова версия log4net, которую вы используете и поставляете с вашим приложением? –

+0

Как я могу проверить его? Я не добавлял его сам, его нет в любом каталоге моего приложения. Я только что узнал о его существовании из-за ошибки. Это Crystal Reports, который берет его откуда-то. – RRM

+0

Похоже, что 64-разрядный компьютер просто имел 64-битную версию Crystal Reports, и вам просто нужно установить 32-разрядную версию, так как это требует ваше приложение. Вы можете увидеть Архитектуру Процессора в GAC, что в log4net 1.2.10.0, вероятно, была только одна запись, так как AMD64, которая является 64-разрядной версией, и как только вы устанавливаете 32-битные Crystal Reports, должна быть запись x86 для сборка log4net. – Zack

ответ

5

Ну, не так много отзыва здесь :) Я уже кое-что узнал от себя и подумал, что поделюсь своими знаниями с любым бедным новичком люди, которые могут столкнуться с подобной проблемой.

Итак, есть что-то вроде GAC - http://en.wikipedia.org/wiki/Global_Assembly_Cache Вы можете подумать об этом как о коллекции библиотек и драйверов, используемых вашими программами.

Это на вашем компьютере в c:/windows/assembly, но это скрытый каталог, поэтому сначала вы должны включить его.

На моем 64-битном компьютере в нем были подкаталоги GAC_32 и GAC_64. В GAC_64 был log4net в:

c:\Windows\assembly\GAC_64\log4net\1.2.10.0__692fbea5521e1304\ 

В GAC_32 ничего не было. Поэтому я создал каталог и скопировал соответствующий файл с моего 32 компьютера в него, и он сработал.

c:\Windows\assembly\GAC_32\log4net\1.2.10.0__692fbea5521e1304\ 

Еще через минуту я столкнулся другую ошибку, но это другая история

CrystalDecisions.CrystalReports.Engine.ReportDocument'. ---> System.IO.FileNotFoundException: Nie można załadować pliku lub zestawu 'CrystalDecisions.ReportAppServer.CommLayer, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304 

Вообще ожидать, что что-то с помощью Crystal Reports построить на 32-битном компьютере могут возникнуть проблемы, когда пытался бежать со скоростью 64 бит компьютер. SAP действительно занималась дрянной работой с этими драйверами.

5

У вас есть механизм выполнения SAP Crystal Reports для платформы .NET (64-разрядная версия), установленной на целевой машине?Если нет, вы можете попробовать установить его из этого link и посмотреть, не устранит ли он вашу проблему.

+0

Это помогло мне, спасибо! – pfedotovsky

10

Установка CR 32 бит (CRRuntime_32bit_13_0_14.msi) разрешит ошибку.

32 и 64-разрядные версии можно найти here.

+0

Я нашел его здесь: http://i-theses.com/en/index.phpindex.php?option=com_downloads&task=downloads&groupid=9&id=100 –

+1

Правильное решение этой проблемы – Rev

+1

После нескольких часов поиска и тестирования различных решений , это был тот, который работал для меня. – po10cySA

1

Кроме того, если вы установили только 32-битную версию на 64-битной платформе, вы получите ту же ошибку Log4net; обе версии, 32 & Требуется 64 бит.

Любопытно, что 64 бит MSI развертывает DLL в папке SAP 32bits (C: \ Program Files (x86) \ BusinessObjects \ Crystal Reports для .NET Framework 4.0 \ Common \ SAP BusinessObjects Enterprise XI 4.0 \ win32_x86 \ dotnet \), что 32bits настройка не работает.

+0

Этот контр-интуитивный и недооцененный ответ правильный, по крайней мере для меня – Tahbaza

Смежные вопросы