System.BadImageFormatException: не удалось загрузить файл или сборку (из installutil.exe) - PullRequest
93 голосов
/ 27 ноября 2008

Я пытаюсь установить службу Windows с помощью InstallUtil.exe и получаю сообщение об ошибке

System.BadImageFormatException: не удалось загрузить файл или сборку '{xxx.exe}' или одну из ее зависимостей. Предпринята попытка загрузить программу с неверным форматом.

Что дает?


РЕДАКТИРОВАТЬ: (не по OP) Полное сообщение извлекается из dup, получая больше хитов [для Google]:

C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319> InstallUtil.exe C: \ xxx.exe Утилита установки Microsoft (R) .NET Framework Версия 4.0.30319.1 Авторские права (c) Корпорация Microsoft. Все права защищены.

Исключительная ситуация при инициализации установки: System.BadImageFormatException: Не удалось загрузить файл или сборку 'file: /// C: \ xxx.exe' или одну из ее зависимостей. Предпринята попытка загрузить программу с неверным форматом.

Ответы [ 15 ]

0 голосов
/ 29 декабря 2018

В случае наличия этого сообщения в живых тестах , но не в модульных тестах , это потому, что выбранные сборки копируются на лету в $(SolutionDir)\.vs\$(SolutionName)\lut\0\0\x64\Debug\. Но иногда несколько сборок могут быть не выбраны , например, dll VC ++ в случае проектов взаимодействия c ++ / c #.

Пост-сборка xcopy не решит проблему, поскольку скопированный файл будет удален механизмом тестирования в реальном времени.

Единственный обходной путь на сегодняшний день (28 декабря 2018 г.) - избегать живых тестов и выполнять все в модульных тестах с атрибутом [TestCategory("SkipWhenLiveUnitTesting")], примененным к классу тестирования или методу теста.

Эта ошибка наблюдается в любой Visual Studio 2017 до 15.9.4 и должна быть устранена командой Visual Studio.

0 голосов
/ 15 августа 2018

Попробовав все упомянутые решения, я обнаружил, что PlatformTarget каким-то образом добавлен к конфигурации AnyCPU в моем проекте .csproj.

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <PlatformTarget>x64</PlatformTarget>
</PropertyGroup>

Удаление линии сработало для меня.

0 голосов
/ 20 марта 2018

Моя проблема была другой. Это произошло после неожиданного выключения моей машины Windows 7. Я выполнил чистое решение, и оно запустилось как положено

0 голосов
/ 06 октября 2016

Подводя итог, необходимо, чтобы Build и Project \ Build \ Platform были установлены на x64 для успешной установки 64-битной службы в 64-битной системе.

0 голосов
/ 27 января 2016

У меня была такая же проблема. Я использовал стандартную команду для исполнения. Он называл X64 ro run против тестов X86. Мне нужно было указать X86, а не версию 64 для nunit-runner.

...