использовать .Net 2.0 dll в приложении .net 4.0 wpf - PullRequest
8 голосов
/ 22 марта 2011

Я пытаюсь добавить ссылку на DLL-библиотеку .Net 2.0 в приложении WPF, которое предназначено для .Net 4 Framework.

Я добавил <startup useLegacyV2RuntimeActivationPolicy="true"> в файл app.config. Приложение WPF прекрасно работает, но при попытке получить доступ к .Net 2.0 DLL получает исключение BadImageFormatException во время выполнения.

"Была предпринята попытка загрузить программу с неверным форматом"

Это работает с новым тестовым проектом WPF, но не работает в моем приложении. Мое приложение использует Entity Framework и MEF. Могут ли эти технологии стать причиной проблемы?

Есть идеи?

Редактировать: Решено

Согласно комментарию Алоиса ниже, мое основное приложение было ориентировано на «Любой процессор», а библиотека DLL была на 32-битную версию.

<startup useLegacyV2RuntimeActivationPolicy="true"> не требуется

1 Ответ

2 голосов
/ 22 марта 2011

Если вам нужно использовать атрибут useLegacyV2RuntimeActivationPolicy, то вы работаете со сборкой смешанного режима, написанной на C ++ / CLI, и нацелены на версию 2.0.50727 CLR. Такая сборка содержит как управляемый код, так и машинный код. Этот машинный код 32-битный в вашем случае, вы не можете запустить его в 64-битном процессе. Что означает исключение. Требуется установить целевую платформу на x86 в вашем проекте EXE.

...