У меня есть два проекта, ProjectA
и ProjectB
. ProjectB
консольное приложение, которое зависит от ProjectA
. Вчера все работало нормально, но вдруг сегодня, когда я бегу, ProjectB
я получаю это:
BadImageFormatException не обработано :
не удалось загрузить файл или сборку 'ProjectA, версия = 1.0.0.0, культура = нейтральная, PublicKeyToken = null' или одна из ее зависимостей. Была предпринята попытка загрузить программу с неверным форматом.
Оба являются просто обычными проектами, не зависящими ни от каких других проектов, не относящихся к .Net. Оба полностью .Net - нет родного кода и P / Invoke. У меня есть другие проекты, которые зависят ProjectA
и все еще работают очень хорошо.
Вещи, которые я пробовал:
- Убедитесь , что оба проекта установлены на «Любой процессор» с сборки галочкой. Они есть.
- Убедитесь, что оба проекта предназначены для одной и той же целевой платформы (.Net 4.0 Client Profile) .
- В ProjectB -> Ссылки -> ProjectA -> Свойства убедитесь, что для параметра «Копировать локально» задано значение «Истина» _ (я убедился, что ProjectA.dll копируется правильно)
- Очистить / восстановить решение. Я даже пытался вручную удалить папки / bin и / obj в обоих проектах.
- Перезапустите Visual Studio. Перезагрузите мой компьютер.
- Проверьте совершенно новую копию хранилища.
Но я все еще получаю ту же ошибку. Я понятия не имею, что я сделал, чтобы вызвать это, и как это исправить. Любые идеи?
источник
Ответы:
Я почти уверен, что у вас конфликт 32-бит / 64-бит. Похоже, ваш основной проект может быть установлен на 32-битный, в то время как класс, на который он ссылается, установлен на 64-битный. Попробуйте посмотреть на этот ТАК вопрос и этот тоже . Между ними вы должны понять свою проблему.
источник
project-->properties-->build
- он был установлен для x86; установка «Любой процессор» исправила эту проблему. Я всегда думал, что этот параметр был таким же, как раскрывающийся список «целевой платформы» в диспетчере конфигурации, но, очевидно, это не так (на самом деле «целевой объект платформы» в диспетчере конфигурации, похоже, вообще ничего не делает!)<PlatformTarget>x86</PlatformTarget>
к одному из зависимых проектов без всякой причины. Если бы я не изучал SVN, я бы никогда не понял, почему наше приложение MVC не запускается.Возможно, вы столкнулись с проблемой вашего сайта после развертывания на сервере.
Затем вам нужно настроить пул приложений для включения 32-битных приложений .
меры
На правой панели нажмите Расширенные настройки ...
Установите для параметра Включить 32-разрядные приложения значение Истина.
источник
Я только что получил это сообщение об ошибке при запуске IIS Express в Visual Studio 2015. В моем случае мне нужно было запустить 64-разрядную версию IIS Express:
Скриншот:
источник
У меня была такая же проблема. Я установил для Project A «Цель платформы» («Project A» (щелчок правой кнопкой мыши) -> Properties-> Build -> «Platform Target») на x86, но оставил для проекта B значение «Любой ЦП». Установка Project B's на "x86" исправила это.
источник
У меня была эта проблема при запуске модульных тестов (xunit) в Visual Studio 2015, и я обнаружил следующее исправление:
источник
Возможно, вам придется изменить настройку пула приложений «Включить 32- битные приложения» на «ИСТИНА» в IIS7, если в вашем проекте есть хотя бы 1 32-битная библиотека dll \ exe.
источник
Во-первых, я получил это в VS2017 со старым проектом, в котором мне нужно было внести небольшие изменения, и перевел все проекты в фреймворк 4.7.
Несколько других упомянули, что выбор
Any CPU
может решить эту проблему.Есть пара мест, где вам нужно это сделать, и это может быть не так просто, как выбрать из выпадающего списка. Это исправило это для меня:
1) Вам нужно сделать это здесь:
2) А также в
Configuration Manager
(правый клик по решению)Но что, если его там нет ???
Затем нажмите
New
и выберите эти настройки: ( спасибо @RckLN )источник
У меня была одна и та же проблема с несколькими проектами в одном решении, в итоге я установил все целевые платформы на .NET Framework 4 и x86 для целевого процессора, и он, наконец, успешно скомпилирован.
источник
Эта проблема также может возникнуть, если вы пытаетесь упаковать 64-битный проект с помощью установщика MSI в VS. («Причина в том, что собственный shim, упакованный с MSI-файлом, является 32-разрядным исполняемым файлом».)
Смотрите здесь для получения дополнительной информации: http://blogs.msdn.com/b/heaths/archive/2006/02/01/64-bit-managed-custom-actions-with-visual-studio.aspx
источник
Ни одно из этих решений не сработало для меня, но, удалив содержимое папок bin и obj, все снова было круто.
источник
Я получил это при создании проекта через Visual Studio Online (VSTS)
Visual Studio Build
.Решение было:
источник
Следующее решило проблему для меня, снимите флажок «Предпочитать 32-битный»:
источник
Я столкнулся с той же проблемой. Это выскочило из ниоткуда, и это показалось мне странным.
В снимке исключений для FusionLog я увидел следующее в его сообщении:
... C: \ Windows \ Microsoft.NET \ Framework64 ...
Подробнее о журнале Fusion: http://msdn.microsoft.com/en-us/library/e74a18c4(v=vs.110).aspx
Все проекты имели целевой процессор AnyCPU. Я изменил проект приложения (проект, который ссылается на все другие проекты) на целевой процессор x86. Теперь это работает.
Не знаю, как произошло смешивание целевого процессора без видимой причины, но это произошло.
источник
Я также столкнулся с этой проблемой в проекте, через несколько минут я нашел решение, эта проблема связана с конфигурацией процессора. Если вы используете Visual Studio 2010 или VS 2013 , просто перейдите в свойства проекта и затем выберите « Компилировать» на боковой панели. и там будет 5 выпадающих, 5-й выпадающий будет Target CPU: вы должны установить его на x86 или x64 в соответствии с вашими требованиями вместо любого CPU.
Моя проблема была решена после замены на x86.
источник
Это также может произойти, просто указав несколько поддерживаемых платформ в файле app.config и заставив приложение работать в другой платформе .NET, отличной от упомянутой первой в файле app.config .
А также это срабатывает, когда в вашей системе есть обе упомянутые платформы.
В качестве обходного пути, приведите целевой фреймворк, который вы собираетесь использовать для отладки, в app.config
пример: если вы пытаетесь запустить в .NET 4, файл конфигурации должен иметь что-то похожее на это,
источник
В моем проекте для C # свойство проекта -> [Build] -> Цель платформы: любой ЦП и снимите флажок Prefer 32-bit, чтобы позволить компилятору выбирать автоматически.
источник
Для сборки Chilkat .NET 4.5 требуется, чтобы среда выполнения VC ++ 2012 или 2013 была установлена на любом компьютере, на котором выполняется ваше приложение. На большинстве компьютеров он уже установлен. Ваш компьютер будет иметь его, потому что Visual Studio была установлена. Тем не менее, если развертывание на компьютере, где требуемая среда выполнения VC ++ недоступна, произойдет описанная выше ошибка:
Установите все нижеуказанные пакеты
Распространяемые пакеты Visual C ++ для Visual Studio 2013 - vcredist_x64
Распространяемые пакеты Visual C ++ для Visual Studio 2013 - vcredist_x86
Распространяемые пакеты Visual C ++ для Visual Studio 2012 - vcredist_x64
Распространяемые пакеты Visual C ++ для Visual Studio 2012 - vcredist_x86
источник
Если вы используете LibreOffice из своей программы через интеграцию с Cli .net, как я, я получаю ту же ошибку. Я использую старую версию LibreOffice в производственной среде на моем ПК. Я установил более новую версию, которая находилась в конфликте. Просто удалите LibreOffice. Я нашел решение здесь .NET CLI: не удалось загрузить файл или сборку «cli_cppuhelper»
источник
Это может быть немного забавно, но у меня была та же проблема с нормальным рабочим кодом. Я добавил StreamWriter и StreamReader, и он выдал эту ошибку. Решение было в том, что я взял этот код в скобки для комментариев, затем сделал отладку, и он снова начал работать
источник
У меня также была эта проблема при запуске модульных тестов с использованием ReSharper в Visual Studio 2017 и исправлена следующая конфигурация:
Также вы можете изменить настройку теста запуска ReSharper: https://resharper-support.jetbrains.com/hc/en-us/articles/207242715-How-to-run-MSTest-tests-using-x64-configuration
источник
В моем случае отсутствовала зависимость в dll, которая вызвала это исключение. Я проверил с Dependency Walker, добавил недостающую DLL и проблема была решена.
Более конкретно, я каким-то образом повредил свой opencv_core340.dll, случайно добавив к нему ключевые слова SVN, и, таким образом, моя dll больше не могла его использовать. Однако я не верю, что решение этой проблемы зависит от того, повреждена ли DLL или отсутствует. Я просто добавляю это ради предоставления полной информации.
источник
Стреляй! Я знал об этой проблеме. Я думал, что все делал правильно, пока случайно не увидел «x86» в окне вывода VS, и тогда я понял причину. Потрачено несколько минут на это сегодня.
Конфигурация в окне «Опубликовать» была установлена на «x86»; в то время как везде это был «х64».
Убедитесь, что он синхронизирован с менеджером конфигурации, опубликуйте настройки, конфигурации решения и настройки IIS (если это ваш веб-сервер).
Также имейте в виду, что VS - это 32-разрядное приложение, а IIS - 64-разрядное. 32-разрядные приложения по умолчанию отключены в IIS.
источник
Я обнаружил что-то отличное от других ответов. Достижение этого исключения в моем проекте было результатом испорченной компиляции. Без внесения каких-либо изменений, только принудительное восстановление , это было исправлено.
источник
Я была такая же проблема. Проект B в моем случае представлял собой .Net Core Class Library, в которой установлен Nuget «Microsoft.Management.Infrastructure». Ошибка состояла в том, что я назвал свой проект B "MI". Я изменил название проекта на что-то другое, и вдруг все снова заработало.
источник
Моя машина показала мне обновление BIOS, и я подумал, не связано ли это с внезапным появлением этой ошибки. И после того, как я сделал обновление, ошибка была решена, и решение построено отлично.
источник
Вы пытаетесь запустить файл .exe из cmd? Это была моя ошибка. Просто запустите файл .exe, дважды щелкнув по нему. Если это .NET Core SCD для Windows 8.1 / Windows Server 2012 R2 x64.
источник