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

5

I'm working on a project and have run into an issue. When I run my code I get this error message:

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

The title of the message is "TypeInitializerException was unhandled".

I receive this error at this line of code:

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

I've been looking up ways to fix this issue, but I keep running into another issue. Everything I find about how to fix this says that the platform target should be changed to x86. All the comments that follow that advice are always positive because it seems to work for everyone, but it's not working for me. I also tried the platform target as x64. When I do that, I don't receive the previously stated error, but instead I receive a new error that reads:

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

The title of this message is "InvalidOperationException was unhandled". And the error is on this line:

db.Open();

db, of course, being set to a new OleDbConnection(connection). connection = an Access db.

Why am I receiving the first error and not the second error when platform target is x86, and vice versa if the platform target is x64?

Stacktrace:

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: 
c#
visual-studio-2010
crystal-reports-xi
unhandled-exception
asked on Stack Overflow Sep 11, 2012 by woods • edited Mar 1, 2019 by karel

12 Answers

8

This looks like it's the original problem:

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.

So it looks like either you're using the wrong version of log4net if it has multiple versions for different architectures, or you've just copied the assembly incorrectly. This part of the log seems relevant too:

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.

That looks like it's the file you need to check for correctness.

answered on Stack Overflow Sep 11, 2012 by Jon Skeet
5

It could be useful to someone: if you have the option to do it, go to IIS and set the Application Pool to 32 bit applications only.

That made the trick for me.

(Of course, your application could be made to run only on 64 bit. In that case, I think the installing of the 64 bit redistributable of CrystalReports should solve the issue)

answered on Stack Overflow Mar 21, 2013 by fgpx78
4

You should install SAP Crystal Reports runtime for .Net 4.0

answered on Stack Overflow Mar 4, 2014 by Jay-r
2

I had the same issue. 32bit app running on a 64bit server. I had installed the 64bit runtime and the above exception was thrown. After installing the 32bit version all worked as expected.

answered on Stack Overflow Sep 7, 2015 by Hayden Wiltshire
0

What I did for this error was to install CrystalReport Runtime. It seems missing some dlls. Check this post out for the package SAP Crystal Reports runtime for .Net 4.0 (64-bit).

answered on Stack Overflow Aug 29, 2014 by Hien Nguyen • edited May 23, 2017 by Community
0

Make sure you have the correct version installed for your environment it try the 64bit installer not the 32bit one as they will both install fine but then the wrong one will cause the mentioned error.

I had the exact same problem and installing the 64bit version instead fixed things for me

answered on Stack Overflow Oct 8, 2014 by Andy Stannard
0

this problem is the driver of crystal report is not install on the client and they are in the crystal report home directory and sub folder and named crystal.forms and crystal.shared and crystal suport and so

answered on Stack Overflow Jan 3, 2016 by user5739566
0

I solved my problem changing the application pool identity, using the local profile and the administrator login (take a look if the password expires).

Symptoms are similar. I think that Log4net pops up because Crystal wants to log the error that has already happened. I don't have any log4net in my project, neither the dll file.

My project is compiled with AnyCpu over a 64bit server, and I already have both CRRedist x86 x64 installed.

I also tried to run in 32bit mode without any change.

0

I'm having the same issue with crystal report, I just change Platform Target "Any CPU" as you can see in screenshot below too. enter image description here

answered on Stack Overflow Jan 20, 2019 by Gurpreet • edited Jan 20, 2019 by 0xInfection
0

Depending on the version you have installed, if you only have the 32-bit version installed you must compile to x86 or if you only have the 64-bit version installed you must compile on x64, if you have both versions installed you must compile on anycpu.

If you compile on anycpu but on the pc you have the 32-bit version it will send you an error.

Cheers

answered on Stack Overflow Apr 7, 2020 by Xtremexploit
0

As other people already figured out: This can happen due to runtime mismatch (x86 / x64). After force building my application for x86 architecture, the error was fixed.

answered on Stack Overflow Apr 8, 2020 by WΩLLE - ˈvɔlə
0

You should install the Crystal Reports Runtime Engine for .Net Framework and Crystal Reports for Microsoft Visual Studio.

answered on Stack Overflow Feb 25, 2021 by Zakaria Rhannan • edited Feb 26, 2021 by Timothy Stepanski

User contributions licensed under CC BY-SA 3.0