Что означает BadImageFormatException 0x80131124 (индекс не найден)?

Моя программа иногда падает со следующим сообщением об ошибке:

System.Reflection.TargetInvocationException: исключение было сгенерировано целью вызова. ---> System.BadImageFormatException: индекс не найден. (Исключение из HRESULT: 0x80131124)

Некоторые детали, которые могут иметь отношение к теме:

  • C# 4 /.NET 4
  • 64-битная ОС Windows 7. EXE для любого процессора (поэтому он в 64-битном режиме).
  • Это выбрасывается во время строительства одного из моих пользовательских объектов. Я создаю этот объект в дочернем домене приложения, чтобы я мог выгружать библиотеки DLL, которые он будет загружать, обслуживая входящий запрос.
  • На http://blogs.msdn.com/b/yizhang/ я вижу, что HRESULT 0x80131124 = CLDB_E_INDEX_NOTFOUND.
  • Я видел это только недавно (работал над этим приложением в течение 3 лет), и даже сейчас, это происходит только тогда, когда я пытаюсь профилировать инструмент с помощью Red Gate Performance Analyzer или Red Gate Memory Analyzer.

Мои вопросы

  • Что это значит?
  • Что такое "индекс не найден"?
  • Как это исправить?

Спасибо большое.

ОБНОВИТЬ

Вместо того, чтобы ориентироваться на EXE для ЛЮБОГО, я принудительно установил его на x64. Проблема все еще возникает.

3 ответа

Взгляните на конфигурацию вашего решения, чтобы убедиться, что все ваши проекты построены на одной платформе.

Причиной вашей ошибки является то, что у вас есть файл x86, пытающийся загрузить 64-битную DLL или наоборот.

Надеюсь, поможет.

Вы можете изменить целевую сборку платформы на X86

Аналогичная ошибка возникла из-за неработающей платформы .NET Framework. Восстановление с помощью утилиты .NET Framework Repair Tool решило проблему.

Другие вопросы по тегам