Инициализатор типа для CrystalDecisions.Shared.SharedUtils вызвал исключение

Я работаю над проектом и столкнулся с проблемой. Когда я запускаю свой код, я получаю это сообщение об ошибке:

The type initializer for 'CrystalDecisions.Shared.SharedUtils' threw an exception

Заголовок сообщения: "TypeInitializerException не обработано".

Я получаю эту ошибку в этой строке кода:

this.crystalReportViewer = new CrystalDecisions.Windows.Forms.CrystalReportViewer();

Я искал способы решить эту проблему, но я продолжаю сталкиваться с другой проблемой. Все, что я нашел о том, как это исправить, говорит о том, что целевая платформа должна быть изменена на x86. Все комментарии, которые следуют этому совету, всегда положительные, потому что это работает для всех, но не для меня. Я также пробовал целевую платформу как x64. Когда я это делаю, я не получаю ранее заявленную ошибку, а вместо этого получаю новую ошибку, которая гласит:

The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine.

Заголовок этого сообщения: "InvalidOperationException не обработано". И ошибка именно в этой строке:

db.Open();

db, конечно же, устанавливается на новое OleDbConnection(соединение). подключение = БД доступа.

Почему я получаю первую ошибку, а не вторую, если целевая платформа — x86, и наоборот, если целевая платформа — x64?

Трассировки стека:

System.TypeInitializationException was unhandled
  Message=The type initializer for 'CrystalDecisions.Shared.SharedUtils' threw an exception.
  Source=CrystalDecisions.Shared
  TypeName=CrystalDecisions.Shared.SharedUtils
  StackTrace:
       at CrystalDecisions.Shared.SharedUtils.get_CurrentControl()
       at CrystalDecisions.Shared.SharedUtils.GetEffectiveCulture()
       at CrystalDecisions.Shared.LocaleManager..ctor()
       at CrystalDecisions.Windows.Forms.CrystalReportViewer.InitReportViewer()
       at CrystalDecisions.Windows.Forms.CrystalReportViewer..ctor()
       at Client_Manager.ReportViewer.InitializeComponent() in C:\Users\Will\Desktop\Client_Manager\SyndicateII\ReportViewer.Designer.cs:line 31
       at Client_Manager.ReportViewer..ctor() in C:\Users\Will\Desktop\Client_Manager\SyndicateII\ReportViewer.cs:line 27
       at Client_Manager.Form1..ctor() in C:\Users\Will\Desktop\Client_Manager\SyndicateII\Form1.cs:line 174
       at Client_Manager.Program.Main() in C:\Users\Will\Desktop\Client_Manager\SyndicateII\Program.cs:line 18
       at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException: System.BadImageFormatException
       Message=Could not load file or assembly 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304' or one of its dependencies. An attempt was made to load a program with an incorrect format.
       Source=CrystalDecisions.Shared
       FileName=log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304
       FusionLog==== Pre-bind state information ===
LOG: User = Will-PC\Will
LOG: DisplayName = log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304
 (Fully-specified)
LOG: Appbase = file:///C:/Users/Will/Desktop/Client_Manager/SyndicateII/bin/Debug/
LOG: Initial PrivatePath = NULL
Calling assembly : CrystalDecisions.Shared, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\Users\Will\Desktop\Client_Manager\SyndicateII\bin\Debug\Client_Manager.vshost.exe.config
LOG: Using host configuration file: 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Post-policy reference: log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304
LOG: Attempting download of new URL file:///C:/Users/Will/Desktop/Client_Manager/SyndicateII/bin/Debug/log4net.DLL.
ERR: Failed to complete setup of assembly (hr = 0x8007000b). Probing terminated.

       StackTrace:
            at CrystalDecisions.Shared.SharedUtils..cctor()
       InnerException: 

person woods    schedule 11.09.2012    source источник
comment
Ваша первая ошибка должна показывать основную причину во вложенном исключении. Вы должны расследовать это.   -  person Jon Skeet    schedule 11.09.2012
comment
В разделе советов по устранению неполадок сообщения об ошибке указано: InnerException: убедитесь, что образ файла является допустимой управляемой сборкой. InnerException: убедитесь, что вы указали правильный путь к файлу для сборки.   -  person woods    schedule 11.09.2012
comment
Забудьте о советах по устранению неполадок — вы должны регистрировать исключения. Отредактируйте вопрос, указав полную трассировку стека, включая вложенные исключения.   -  person Jon Skeet    schedule 11.09.2012


Ответы (12)


Похоже, это исходная проблема:

InnerException: System.BadImageFormatException
   Message=Could not load file or assembly 'log4net, Version=1.2.10.0,
        Culture=neutral, PublicKeyToken=692fbea5521e1304'
   or one of its dependencies. An attempt was made to load a program
   with an incorrect format.

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

LOG: Attempting download of new URL
file:///C:/Users/Will/Desktop/Client_Manager/SyndicateII/bin/Debug/log4net.DLL.
ERR: Failed to complete setup of assembly (hr = 0x8007000b). Probing terminated.

Похоже, это файл, который вам нужно проверить на правильность.

person Jon Skeet    schedule 11.09.2012
comment
Я тоже заметил эту штуку log4net. Я собираюсь работать над этим прямо сейчас. Надеюсь, я исправлю это дело. Но в то же время, большое спасибо за вашу помощь. - person woods; 11.09.2012

Это может быть кому-то полезно: если у вас есть возможность сделать это, перейдите в IIS и установите пул приложений только для 32-битных приложений.

Это помогло мне.

(Конечно, ваше приложение может работать только на 64-битной системе. В этом случае я думаю, что установка 64-битной распространяемой версии CrystalReports должна решить проблему)

person fgpx78    schedule 21.03.2013
comment
так благодарен за ваш совет. Я только что проверил свой пул приложений IIS 7.5 и включил 32-битные приложения с FALSE на TRUE, и это решило эту сумасшедшую проблему, связанную с невозможностью загрузки log4net. Спасибо! - person John Adams; 29.01.2015

Вам следует установить среду выполнения SAP Crystal Reports для .Net 4.0.

person Jay-r    schedule 04.03.2014
comment
Мне это помогло, так как программа установки Crystal Reports добавляет некоторые параметры реестра. Я также получил сообщения об ошибках log4net и SharedUtils, которые исчезли после установки SAP Crystal Reports. Попробуйте: sap.com/products/crystal-visual-studio.html или crystalreports.com/crystal-reports-visual-studio - person AndyS; 23.01.2018

Я была такая же проблема. 32-битное приложение работает на 64-битном сервере. Я установил 64-битную среду выполнения, и было выдано указанное выше исключение. После установки 32-битной версии все заработало как положено.

person Hayden Wiltshire    schedule 07.09.2015

Что я сделал для этой ошибки, так это установил среду выполнения CrystalReport. Кажется, не хватает некоторых dll. Проверьте этот пост для пакета среды выполнения SAP Crystal Reports для .Net 4.0 (64-разрядная версия).

person Hien Nguyen    schedule 29.08.2014

Убедитесь, что у вас установлена ​​правильная версия для вашей среды, попробуйте 64-битный установщик, а не 32-битный, поскольку они оба будут установлены нормально, но неправильный вариант вызовет указанную ошибку.

У меня была точно такая же проблема, и вместо этого я установил 64-битную версию.

person Andy Stannard    schedule 08.10.2014

эта проблема заключается в том, что драйвер Crystal Report не установлен на клиенте, и они находятся в домашнем каталоге Crystal Report и подпапке и называются crystal.forms и crystal.shared и crystal support и так далее.

person user5739566    schedule 03.01.2016

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

Симптомы схожи. Я думаю, что всплывает Log4net, потому что Crystal хочет зарегистрировать ошибку, которая уже произошла. В моем проекте нет ни log4net, ни файла dll.

Мой проект скомпилирован с помощью AnyCpu на 64-битном сервере, и у меня уже установлены оба CRRedist x86 x64.

Я также пытался запустить в 32-битном режиме без каких-либо изменений.

person Alessandro Bernardi    schedule 09.12.2018

У меня та же проблема с отчетом о кристаллах, я просто меняю целевую платформу «Любой процессор», как вы также можете видеть на снимке экрана ниже. введите здесь описание изображения

person Gurpreet    schedule 20.01.2019

В зависимости от версии, которую вы установили, если у вас установлена ​​только 32-разрядная версия, вы должны скомпилировать ее в x86, или если у вас установлена ​​только 64-разрядная версия, вы должны скомпилировать ее в x64, если у вас установлены обе версии, вы должны скомпилировать ее в любой процессор.

Если вы скомпилируете на любом процессоре, но на компьютере у вас 32-битная версия, это отправит вам сообщение об ошибке.

Ваше здоровье

person Xtremexploit    schedule 07.04.2020

Как уже выяснили другие люди: это может произойти из-за несоответствия времени выполнения (x86/x64). После принудительной сборки моего приложения для архитектуры x86 ошибка была исправлена.

person WΩLLE - ˈvɔlə    schedule 08.04.2020

Вам следует установить механизм выполнения Crystal Reports для .Net Framework и Crystal Reports для Microsoft Visual Studio.

person Zakaria Rhannan    schedule 25.02.2021