Поделиться через


Разрешение вопросов, связанных с исключениями: System.BadImageFormatException

Исключение BadImageFormatException возникает, если образ файла DLL или выполняемая программа не является допустимым управляемым исполняемым файлом.

Полезные советы

  • Если в приложении используются 32-разрядные компоненты, необходимо обеспечить, чтобы оно выполнялось как 32-разрядное приложение.
    Если для свойства Конечная платформа проекта приложения задано значение AnyCPU, скомпилированное приложение может выполняться как в 64-, так и в 32-разрядном режиме. Когда приложение выполняется как 64-разрядное, JIT-компилятор создает 64-разрядный машинный код. Если приложение зависит от 32-разрядного управляемого или неуправляемого компонента, этот компонент не будет загружен в 64-разрядном режиме. Чтобы устранить эту проблему, установите для свойства проекта Конечная платформа значение x86 и выполните повторную компиляцию.

  • Убедитесь, что не используются компоненты, созданные с помощью другой версии платформы .NET Framework.
    Это исключение возникает, когда приложение или компонент, который был разработан с использованием .NET Framework 1.0 или .NET Framework 1.1, пытается загрузить сборку, которая была разработана с помощью .NET Framework 2.0 с пакетом обновления 1 (SP1) или более поздней версии, или когда приложение, разработанное с использованием .NET Framework 2.0 с пакетом обновления 1 (SP1) или .NET Framework 3.5, пытается загрузить сборку, которая была разработана с помощью .NET Framework 4. Исключение BadImageFormatException может выявляться как ошибка времени компиляции, или это исключение может возникать во время выполнения. См. пример в описании класса BadImageFormatException.

  • Убедитесь, что образ файла — это допустимая управляемая сборка или модуль.
    Это исключение возникает, когда неуправляемая библиотека динамической компоновки (DLL) или исполняемый файл передается методу Load для загрузки.

    Дополнительные сведения для пользователей Visual Basic см. в разделе Устранение неполадок взаимодействия (Visual Basic).

Примечания

Отражение исполняемых файлов C++ может вызвать это исключение. Причина этого, вероятнее всего, в том, что компилятор C++ чередует адреса переадресации и раздел .Reloc исполняемого файла. Чтобы сохранить адреса переадресации в исполняемом файле C++, укажите при компоновке параметр /fixed:no.

Дополнительные причины возникновения этого исключения см. в описании класса BadImageFormatException.

См. также

Задачи

Практическое руководство. Использование помощника по исключениям

Ссылки

BadImageFormatException

Журнал изменений

Дата

Журнал

Причина

Апрель 2011

Добавлены обычные причины возникновения исключения.

Обратная связь от клиента.