Не вдалося завантажити файл чи збірку "xxx" або одну з її залежностей. Була зроблена спроба завантажити програму з неправильним форматом


188

Я щойно перевірив версію Subversion до нової папки. Відкрив рішення, і я отримую це під час запуску:

Не вдалося завантажити файл або збірку "xxxx" або одну з її залежностей. Була зроблена спроба завантажити програму з неправильним форматом.

Це той самий код, який я перевіряв деякий час тому. Чому зараз це роблять? Тепер я також бачу налагодження x86 замість просто налагодження в папці бін цього проекту xxx. Що таке Debug x86 і чому я просто не маю налагодження, як я звик у папці bin?


2
Ви спробували все відновити? Іноді це виправляє дивні проблеми залежності для мене ...
mezoid

Відповіді:


246

Здається, що одна частина проекту будується лише для x86, а решта будується для будь-якого процесора / x64. Це теж мене покусало. У вас працює x64 (або uh ... IA64)?

Перевірте властивості проекту та переконайтеся, що все створено для "Будь-якого ЦП". Якщо ви перебуваєте у Visual Studio, ви можете перевірити все, перейшовши в меню "x86" або "Будь-який процесор" (поруч із меню "Налагодження" / "Випуск") на панелі інструментів у верхній частині екрана та натиснувши "Менеджер конфігурацій ..."


1
Це також у Project-> Properties-> Build або Debug-> Properties-> Build. Щойно оновлений VS2015, версія 14.0.25123.00 Оновлення 2. Це оновлення щойно вийшло 5.10.16 (вчора!). Я виявив, що ціль платформи встановлений на x64, що спричинило зазначену помилку. Налаштування "Будь-який процесор" виправлено.
Майкл Д. О'Коннор

179

Якщо ви отримаєте цю помилку під час запуску сайту в IIS 7+ на 64-бітних серверах, у вас можуть бути збірки, що мають 32 біти, і у вашому пулі додатків буде встановлено параметр "Увімкнути 32-бітні програми", який встановлено на помилковий; Встановіть це значення true та перезапустіть сайт, щоб він працював.


5
@ Mayhem50 Те саме тут. Це залежить від місця виникнення помилки. Якщо це через веб-сервер Visual Studio & Cassini, справа Фрейзера. Якщо це трапляється в IIS7 +, відповідь Нікс, мабуть, є найбільш ймовірним виправленням.
Карл Генріх Ганке

Це була ідеальна відповідь для мене (перемістив сайт з IIS6 на x86 до IIS 7 на x64)
DrStalker

Так, це вдалося. Я перемістив сайт з IIS6 на x86 до IIS 7 на x64. Дуже дякую!
Лукас

40

У мене виникла помилка при спробі використовувати жахливі бізнес-об’єкти 4 для .Net SDK.

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

Щоб завантажувати мою веб-сторінку, мені потрібно було натиснути на Інструменти \ Параметри , а потім змінити це налаштування у VS2013:

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


Такого варіанту для мене не існує. Єдиний варіант на цьому екрані для мене під Visual Studio 2010 - це "Використовувати IIS Express для нових файлових веб-сайтів та проектів"
Дрю Чапін

У мене є цей варіант у VS 2017 Professional
SKCS Kamal

33

inetmgr тоді перейдіть до пулу додатків-> розширені налаштування вашого пулу-> буде встановлено параметр "Увімкнути 32-бітні програми" на істинне; та перезапустіть IIS. перевірити ще раз!


По-друге це. Я створив новий пул додатків для свого сайту і забув переключити цей параметр.
AlbatrossCafe

1
Це виправило і для мене. Єдине, що мені потрібно було змінити, - це змінити трубопровід на інтегрований, оскільки це призвело до помилки також після застосування вищевказаного виправлення.
AxleWack

7

BadImageFormatException для програми, що працює на IIS (не працює з VS, оскільки візуальна студія виправляє проблему за допомогою збірки для "Будь-якого процесора") може бути викликана наступним:

Сайт - це сервер, на якому розміщено x64, а за замовчуванням у програмі пулу додатків для Enable 32-bit Applications було помилковим. і у вас 32-бітні збірки

На рівні Visual Studio виправлення:

  1. Змініть налаштування проекту "Цільовий процесор" на "ANYCPU"

7

Переконайтеся, що ви перевірили налаштування для "Віддати перевагу 32-розрядному". У моєму випадку Visual Studio 2012 перевіряв це налаштування за замовчуванням. Спроба використати що-небудь із зовнішньої DLL не вдалася, поки я не зняв позначку "Віддати перевагу 32-бітовій" .

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


4

Це, безумовно, проблема, коли деякі проекти будуються для сумісності x86 замість будь-якого процесора. Якби мені довелося здогадуватися, я б сказав, що деякі посилання між вашими проектами, ймовірно, посилаються на dll у деяких папках bin \ debug замість посилань на проекти.

Коли проект компілюється для x86 замість "Будь-якого процесора", DLL переходить у папку bin \ x86 \ debug замість bin \ debug (напевно, там, де шукаються ваші посилання).

Але в будь-якому випадку вам слід використовувати посилання на проекти між своїми проектами.


0

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.