Не удалось загрузить файл или сборку «xxx» или одну из его зависимостей. Была сделана попытка загрузить программу с неправильным форматом


189

Я только что перенес ревизию из Subversion в новую папку. Открыл решение, и я получаю это при запуске:

Не удалось загрузить файл или сборку «xxxx» или одну из его зависимостей. Была сделана попытка загрузить программу с неправильным форматом.

Это тот же код, который я проверял некоторое время назад. Почему сейчас он это делает? Теперь я также вижу Debug x86, а не просто Debug в папке bin этого проекта xxx. Что такое Debug x86 и почему у меня просто нет Debug, как раньше, в папке bin?


2
Вы пробовали все перестроить? Иногда это
решает

Ответы:


247

Похоже, что одна часть проекта строится только для x86, а остальная - для любого CPU / x64. Меня это тоже укусило. Вы используете x64 (или э-э ... IA64)?

Проверьте свойства проекта и убедитесь, что все строится для "Any CPU". Если вы используете Visual Studio, вы можете проверить все, перейдя в меню «x86» или «Любой процессор» (рядом с меню «Отладка» / «Выпуск») на панели инструментов в верхней части экрана и нажав "Диспетчер конфигурации..."


1
Это также в Project-> Properties-> Build или Debug-> Properties-> Build. Только что обновил VS2015, версия 14.0.25123.00 Обновление 2. Это обновление было выпущено 5.10.16 (вчера!). Я обнаружил, что для целевой платформы установлено значение x64, что вызвало указанную ошибку. Установка на "Any CPU" исправила это.
Майкл Д. О'Коннор,

179

Если вы получаете эту ошибку при запуске сайта в IIS 7+ на 64-битных серверах, у вас могут быть сборки, которые являются 32-битными, и ваш пул приложений будет иметь параметр «Включить 32-битные приложения», установленный на False; Установите значение true и перезапустите сайт, чтобы он заработал.


5
@ Mayhem50 То же и здесь. Это зависит от того, где возникает ошибка. Если это происходит через веб-сервер Visual Studio и Cassini, Фрейзер прав. Если это происходит в IIS7 +, ответ Nicks, вероятно, является наиболее вероятным исправлением.
Carl Heinrich Hancke

Для меня это был идеальный ответ (переместил сайт с IIS6 на x86 на IIS 7 на x64)
DrStalker 01

Ага, это сработало. Я переместил сайт с IIS6 на x86 на IIS 7 на x64. Спасибо огромное!
Лукас

40

У меня была эта ошибка при попытке использовать ужасный Business Objects 4 для .Net SDK.

Они поставляют пять файлов BusinessObjects * .dll, но все они 64-разрядные.

Чтобы загрузить мою веб-страницу, мне нужно было щелкнуть Tools \ Options , а затем изменить этот параметр в VS2013:

введите описание изображения здесь


Для меня такой возможности не существует. Единственный вариант на этом экране для меня в Visual Studio 2010 - «Использовать IIS Express для новых файловых веб-сайтов и проектов»
Дрю Чапин

У меня есть эта опция в VS 2017 Professional
SKCS Kamal

33

inetmgr затем перейдите в Пул приложений-> Расширенные настройки вашего пула-> параметр «Включить 32-разрядные приложения» будет установлен в значение true; и перезапустите IIS. Проверьте еще раз.!


Во-вторых, это. Я создал новый пул приложений для своего сайта и забыл переключить этот параметр.
AlbatrossCafe

1
Это тоже исправило это для меня. Единственное, что мне нужно было изменить, это изменить конвейер на интегрированный, так как это также вызывало ошибку после применения вышеуказанного исправления.
AxleWack

7

Исключение BadImageFormatException в приложении, работающем в IIS (не запущенном из VS, поскольку Visual Studio решает проблему с помощью сборки для «Any CPU»), может быть вызвано следующими причинами:

Сайт представляет собой сервер x64, и для пула приложений по умолчанию установлено значение «Включить 32-разрядные приложения». а у вас 32-битные сборки

На уровне Visual Studio исправление:

  1. Измените настройку проекта "Целевой ЦП" на "ЛЮБОЙ ЦП".

7

Убедитесь, что вы проверили настройку «Предпочитать 32-разрядную версию». В моем случае в Visual Studio 2012 этот параметр отмечен по умолчанию. Попытка использовать что-либо из внешней библиотеки DLL не удалась, пока я не снял флажок «Предпочитать 32-разрядный» .

введите описание изображения здесь


4

Это определенно проблема с некоторыми проектами, созданными для совместимости с x86, а не для любого процессора. Если бы мне пришлось угадывать, я бы сказал, что некоторые ссылки между вашими проектами, вероятно, ссылаются на библиотеки DLL в некоторых папках bin \ debug, а не на ссылки на проекты.

Когда проект компилируется для x86 вместо «Любой процессор», dll попадает в папку bin \ x86 \ debug вместо bin \ debug (где, вероятно, и ищут ваши ссылки).

Но в любом случае вы должны использовать ссылки на проекты между своими проектами.


0

если в визуальной студии с IIS express работает, а при публикации не удалось, попробуйте следующее:введите описание изображения здесь


0

В моем случае это сработало, перейдя в свойства проекта и в Target Framework я выбрал .NET Framework 4. Это потому, что я переехал на новый компьютер, на котором уже были установлены другие более высокие .NET framework, и проект выбрал их по умолчанию. Посмотрите, какая целевая платформа вам подходит.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.