Any thoughts on what might be causing this exception?
I have a webservice proj, when i load the link i get
Could not load file or assembly 'Interop.DIB' or one of its dependencies. An attempt was made to load a program with an incorrect format.
Exception Details: System.BadImageFormatException: Could not load file or assembly 'Interop.DIB' or one of its dependencies. An attempt was made to load a program with an incorrect format.
Inner exceptions:
[BadImageFormatException: Could not load file or assembly 'Interop.DIB' or one of its dependencies. An attempt was made to load a program with an incorrect format.]
[ConfigurationErrorsException: Could not load file or assembly 'Interop.DIB' or one of its dependencies. An attempt was made to load a program with an incorrect format.]
[HttpException (0x80004005): Could not load file or assembly 'Interop.DIB' or one of its dependencies. An attempt was made to load a program with an incorrect format.]
Version Information:
Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.272
Ok the answer is Got to Start->Run->type inetmgr and on the left application pools, select DefaultAppPool and the virtual directory name of the app and for both make sure to enable 32 -bit applications to true, am using IIS7.0 and windows 7 64-bit.
BadImageFormatException
usually means 64 vs 32 bit conflict. One of the assemblies is set to a specific platform i.e. 64 bit or 32 bit while the other is set or defaults to a different one. Check if both assemblies are for the same platform, preferably "Any CPU". In other words it could be that a 64 bit assembly is trying to load 32 bit one or vice versa.
This also applies if you're calling a COM or a DLL which is compiled for different platform, for example you call 32 bit COM/DLL from an assembly on a 64 bit system where assembly's platform would default to x64. In this case adjust your assembly's platform to match.
To change platform go to project Properties -> Build -> Platform.
I had this issue, when trying to use 64-bit .dlls in my ASP.Net project, in Visual Studio 2013.
The solution was to click on Tools\Options, and tick this box:
The most common cause in my experience is that you made a change to a referenced assembly that requires rebuilding other assemblies using that changed assembly, and didn't rebuild them.
Example #1: you have an EXE that references a DLL. You add something to the referenced DLL that adds a new method, new parameter, whatever. This changes the external "signature" of the DLL; that is, the location in memory of various entry points. You don't rebuild the EXE. When the EXE loads and tries to reference the new DLL, its old entry point is no longer valid, so it cannot execute the code it needs.
Example #2: you have an x86 EXE that references a DLL. This DLL must also be compiled for x86 (or Any CPU). If you rebuild it for x64, the EXE, running in a 32-bit space, will not understand the instructions and register references to the 64-bit "extended" world, and will cry uncle.
I had the same issue on Visual Studio 2015 on Windows 10 x64. I was already compiling in Any CPU mode. This was a default MVC4 application (nothing added). I found a simple solution over here that worked for me: https://github.com/aspnet/Home/issues/524
In VS 2015: Tools > Options > Projects and Solutions > Web Projects > Use the 64 bit version of IIS Express for websites and projects
If I had to take a guess, it is either a) not finding the interoped assembly or b) the COM DLL is not registered in the local registry. Simply copying DIB to the /bin folder is not enough when you are monkeying with COM.
I believe (B) is the most likely answer to what is happening.
What worked for me was to add the assembly to GAC. To do that I ran gacutil -i PATH_TO_ASSEMBLY from Visual Studio Command Prompt
I finally got around this exception by deleting the entry in the applicationhost.config for IIS Express (C:\Users{username}\Documents\IISExpress\config\applicationhost.config).
I had also stopped the IIS express instance, cleaned and rebuilt in VS. Then change the config file, then restarted VS 2013.
An alternate to this issue is to change the build properties of your project.
For vb.net got to Project--> Properties --> Compile --> Advanced Compile Options Here change the target CPU
What worked for me is doing a BIOS update on my machine!
This work for me, if not work for you, don't vote down. It's impolite
So it works if I change in the c# project from Any CPU to x86(all dlls are compiled in WIN32) from Properties -> Build -> Platform Target. I work on a 64-bit Win7 pc and aparently if I use Any CPU as target it does't find the wrapper dll.
https://www.codeproject.com/Questions/358717/Could-not-load-file-or-assembly-dll-file
My Error fixed, with change of build option to:
in my C#.net win project:
Properties > Build > Platform Target > 'x86'
I accidentally change its value to 'Any CPU' and forget to change it.
My Error fixed, with change of build option to:
in my C#.net
win project:
Properties > Build > Platform Target > 'x86'
I accidentally change its value to 'Any CPU' and forget to change it.
It's work for me
User contributions licensed under CC BY-SA 3.0