Что означает 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 или наоборот.
Надеюсь, поможет.
Аналогичная ошибка возникла из-за неработающей платформы .NET Framework. Восстановление с помощью утилиты .NET Framework Repair Tool решило проблему.