Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

use .Net 2.0 dll in .net 4.0 wpf application

Tags:

c#

clr

.net-4.0

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

like image 923
Mike Avatar asked Mar 22 '11 19:03

Mike


1 Answers

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.

like image 162
Hans Passant Avatar answered Nov 17 '22 12:11

Hans Passant