Reputation: 323
I am trying to add a reference to a .Net 2.0 DLL in a WPF application that is targeted to the .Net 4 Framework.
I added <startup useLegacyV2RuntimeActivationPolicy="true">
to the app.config file. The WPF app builds fine, but gets a BadImageFormatException at Runtime when trying to access the .Net 2.0 DLL.
"An attempt was made to load a program with an incorrect format"
This works with a new test WPF project, but does not work on my app. My app uses Entity Framework and MEF. Could these technologies be causing the issue?
Any ideas?
Edit: Resolved
According to the comment by Alois below, I had my main app targeted to 'Any CPU' and the DLL was targeted to 32-bit.
<startup useLegacyV2RuntimeActivationPolicy="true">
was not required
Upvotes: 8
Views: 5073
Reputation: 941455
When you have to use the useLegacyV2RuntimeActivationPolicy attribute then you are working with a mixed-mode assembly that was written in C++/CLI and targeting version 2.0.50727 of the CLR. Such an assembly contains both managed code and native machine code. That machine code is 32-bit in your case, you can't run it in a 64-bit process. Which is what the exception means. Setting the Platform target to x86 in your EXE project is required.
Upvotes: 2