Я пытаюсь установить службу Windows с помощью InstallUtil.exe и получаю сообщение об ошибке
System.BadImageFormatException: не удалось загрузить файл или сборку '
{xxx.exe}
' или одну из его зависимостей. Была сделана попытка загрузить программу с неправильным форматом.
Что дает?
РЕДАКТИРОВАТЬ: (Не OP) Полное сообщение, извлеченное из дубликата, получает больше обращений [для удобства Google]:
C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319> InstallUtil.exe C: \ xxx.exe Утилита установки Microsoft (R) .NET Framework версии 4.0.30319.1 Авторские права (c) Microsoft Corporation. Все права защищены.
При инициализации установки возникла исключительная ситуация: System.BadImageFormatException: не удалось загрузить файл или сборку file: /// C: \ xxx.exe или одну из ее зависимостей. Была сделана попытка загрузить программу с неверным форматом.
Убедитесь, что последняя версия Framework (та, с которой вы скомпилировали приложение) находится первой в PATH. Это решило проблему для меня. (Найдено на форуме )
источник
Я думаю, вы используете 64-битную версию инструмента для установки 32-битного приложения. Я также столкнулся с этой проблемой сегодня и использовал этот путь Framework для обслуживания.
C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319
и он должен установить ваше 32-битное приложение.
источник
Ключ состоит в том, чтобы установить настройки процессора соответствия для проекта, которые находятся в двух местах.
А также убедитесь, что настройки архитектуры совпадают в меню Тест >> Настройки теста >> Архитектура процессора по умолчанию >>, как показано ниже.
Это для VS2013, но, возможно, и для других версий.
Обновление - для VS2019:
источник
Хорошо, это проблема, которая у меня была, и то, что ее исправило, кажется очень актуальным для вышеизложенного.
Я использую Visual Studio 2010 Express. Я написал тестовый сервис, который на самом деле ничего не делал. Позже это была просто практика для настоящего дела.
Я написал сервис, попытался установить с помощью
installutil.exe
и получил следующую ошибку:Пока то же, что и первоначальный автор.
Вышеупомянутое замечание Рубена о 32-битном выводе Visual Studio 2010 было здесь спасением.
Я использовал 64-битную версию,
installutil.exe
и, конечно же, результат сборки Visual Studio 2010 был 32-битным. Чтобы добавить здесь немного дополнительной ценности, вы можете найти 32-разрядную версию последней версии .NET framework и связаннуюinstallutil.exe
с ней папку C: \ Windows \ Microsoft.NET \ framework . Использование этой версииinstallutil.exe
решило мою проблему; сервис установил без сучка и задоринки!Надеюсь, это поможет кому-то еще.
источник
Попробовав все упомянутые решения, я обнаружил, что в моем проекте
PlatformTarget
каким-то образом добавленAnyCPU
файл .csproj.Удаление строки сработало для меня.
источник
Processor Architecture for AnyCPU Projects
) все снова начинает работать.У меня была эта проблема с проектом WinForms, использующим VS 2015. Мое решение было:
источник
Я была такая же проблема. Я использовал для исполнения стандартную команду. Он вызывал запуск X64 ro против тестов X86. Мне нужно было указать версию nunit-runner для X86, а не для X64.
источник
Подводя итог, и Build, и Project \ Build \ Platform должны быть установлены на x64, чтобы успешно установить 64-битную службу в 64-битной системе.
источник
Моя проблема была в другом. Это произошло после неожиданного выключения моей машины с Windows 7. Я выполнил чистое решение, и оно работало, как ожидалось.
источник
В случае наличия этого сообщения в реальных тестах , но не в модульных тестах , это связано с тем, что выбранные сборки копируются на лету в
$(SolutionDir)\.vs\$(SolutionName)\lut\0\0\x64\Debug\
. Но иногда некоторые сборки могут быть не выбраны , например, библиотеки DLL VC ++ в случае взаимодействия проектов c ++ / c #.Пост-сборка
xcopy
не решит проблему, потому что скопированный файл будет удален движком живого тестирования.Единственный обходной путь на сегодняшний день (28 декабря 2018 г.) - избегать Live-тестов и делать все в модульных тестах с атрибутом
[TestCategory("SkipWhenLiveUnitTesting")]
примененным к классу тестирования или методу тестирования.Эта ошибка наблюдается в любой версии Visual Studio 2017 до 15.9.4 и требует решения командой Visual Studio.
источник
Целевая сборка x64 Целевой сервер Хостинг IIS 64 бит
Щелкните правой кнопкой мыши хостинг appPool, на котором запущен веб-сайт / веб-приложение, и установите для параметра enable 32 bit application = false.
источник
Я столкнулся с этой проблемой сегодня. В моем случае целевая платформа моего приложения (имела ссылку на 64-битную dll) была установлена,
AnyCPU
ноPrefer 32-bit
флажок в разделе целевой платформы был установлен по умолчанию. Это была проблема, и после снятияPrefer 32-bit
флажка все работало нормально .источник
Мы нашли другое решение проблемы с тем же симптомом:
Мы увидели эту ошибку, когда обновили проект с .net 4.7.1 до 4.7.2.
Проблема заключалась в том, что даже несмотря на то, что мы больше не ссылались на System.Net.Http в проекте, он был указан в разделе loadedAssembily нашего web.config. Удаление этой и любых других неиспользуемых ссылок на сборки из файла web.config решило проблему.
источник
Проблема в том, что все,
System.BadImageFormatException: Could not load file or assembly
включая те, с которыми вообще не связаны,installutil.exe
указывают на эту самую ветку.Если ваша проблема связана с
WindowsBase
илиPresentationFramework
dll и у вас установлены анализаторы, убедитесь, что они установлены для всех проектов в вашем решении или ни для одного из них.Ссылка на весь фреймворк в
.csproj
файле вашей библиотеки, а не только на дваdlls
:Удалить
bin
иobj
каталоги, чистое решение и перестраивать.источник