Удостоверьтесь новейшая Платформа (тот, который Вы скомпилировали свое приложение с), является первым в ПУТИ. Это решило проблему для меня. (Найденный на форуме )
Некоторые подробности для полноты картины на случай, если это кому-то поможет ...
Обратите внимание, что наиболее распространенной причиной этого исключения в наши дни является попытка загрузить 32-разрядная ( / platform: x86
) DLL в процесс, который является 64-разрядным, или наоборот (то есть загрузить 64-разрядную ( / platform: x64
) DLL в 32-битный процесс). Если ваша платформа
не является специфичной ( / platform: AnyCpu
), этого не произойдет (при условии, что нет зависимостей с неправильной разрядностью).
Другими словами, выполняется:
% windir% \ Microsoft.NET \ Framework \ v2.0.50727 \ installutil.exe
или:
% windir% \ Microsoft.NET \ Framework 64 \ v2.0.50727 \ installutil.exe
не будет работать (замените в других версиях фреймворка: v1.1.4322
(только 32-разрядная версия, поэтому эта проблема не возникает) и v4.0.30319
, как указано выше).
Очевидно, что, как указано в другом ответе, также потребуется.NET-версия installutil
, которую вы запускаете, должна быть> = (предпочтительно =) номером EXE / DLL-файла, установщик которого вы запускаете.
Наконец, обратите внимание, что в Visual Studio 2010 инструмент по умолчанию будет генерировать двоичные файлы x86 (, а не Любой ЦП , как ранее ).
Полная информация об исключении System.BadImageFormatException (утверждение, что единственная причина - несоответствие прикуса, на самом деле является большим упрощением!).
Другой причиной возникновения исключения BadImageFormatException
в установщике x64 является то, что в Visual Studio 2010 по умолчанию .vdproj
Install Project type генерирует 32 -bit прокладка InstallUtilLib
, даже в системе x64 (Найдите на странице «64-разрядные управляемые настраиваемые действия вызывают исключение System.BadImageFormatException»).