Проблема с исключением Bad Image Format

Возможный дубликат:
BadImageFormatException во время проблемы с загрузкой сборки .Net

Я пытаюсь запустить исполняемый файл, который загружает сборку и извлекает ее версию. Файл отлично работает на win xp, но при запуске на win 7 происходит сбой, что приводит к следующему исключению.

Unhandled Exception: System.BadImageFormatException: Could not load file or asse
mbly 'some.dll' or one of its dependencies. An attempt was made to load a program with
 an incorrect format.
File name: 'some.dll'
   at System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase,
Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boo
lean throwOnFileNotFound, Boolean forIntrospection)
   at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence
 assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
   at System.Reflection.Assembly.LoadFrom(String assemblyFile)
   at NxTools.InstallTools.Utils.MIPSettings.MIPEnvironmentSettings.Main(String[
] args)

WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\M
icrosoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure lo
gging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fus
ion!EnableLog].

Кто-нибудь сталкивался с этой проблемой? Каким может быть вероятное решение этой проблемы?


person Shashank    schedule 02.12.2010    source источник


Ответы (2)


Это может иметь несколько причин, наиболее вероятно, что вы пытаетесь загрузить 32-битную управляемую dll на 64-битную машину или наоборот.

Это также может означать, что dll, которую вы динамически загружаете, не является родной dll или файл dll поврежден.

Это может означать, что у вас есть dll, использующая более высокую версию .Net framework, чем какая-либо другая dll, которая ее использует, например, если вы пересобрали определенный компонент с другой версией.

Этот вопрос охватывает аналогичную тему, как и этот, который также предлагает способ заставить ваше 64-битное приложение работать в 32-битном режиме, чтобы оно могло загружать 32-битную зависимость .

person Sam Holder    schedule 02.12.2010

Пожалуйста, проверьте, используете ли вы 64-битную Windows и dll ТОЛЬКО 32-битную (иногда доступны специальные версии для 64-битной Windows)

person Tobias Schittkowski    schedule 02.12.2010