Не удалось загрузить файл или сборку ... была сделана попытка загрузить программу, имеющую неверный формат (система.Исключение badimageformatexception)



у меня есть два проекта, ProjectA и ProjectB. ProjectB есть консольное приложение, которое зависит от ProjectA. Вчера все работало нормально, но вдруг сегодня, когда я бегу ProjectB Я получаю это:




исключение badimageformatexception не обработано:

Не удалось загрузить файл или сборку 'ProjectA, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' или одну из его зависимостей. Была сделана попытка загрузить программу, имеющую неверный формат.




оба являются просто обычными проектами, без каких-либо зависимостей от других non-.Net проекты. Оба полностью .Net-нет собственного кода и нет P/Invoke. У меня есть другие проекты, которые зависят от ProjectA и все еще работают просто отлично.



вещи, которые я пробовал:




  • убедитесь, что оба проекта настроены на "любой процессор", с помощью построить проверено. Они.

  • убедитесь, что оба проекта находятся на одной и той же цели Framework (Профиль Клиента .Net 4.0).

  • в проект Б --> ссылки --> проект --> свойства, убедитесь, что "Копировать Локально" установлено значение "правда"_ (я проверил этот проект.dll копируется правильно)

  • очистить/перестроить решение. Я даже попытался вручную удалить папки /bin и /obj в обоих проектах.

  • Перезапустите Visual Studio. Перезагрузить компьютер.

  • проверить совершенно новая копия репозитория.


но я все еще получаю ту же ошибку. Я понятия не имею, что я сделал, чтобы вызвать это, ни как это исправить. Есть идеи?

1301   21  

21 ответов:

Я уверен, что у вас 32-разрядная / 64-разрядная конфликта. Похоже, что ваш основной проект может быть установлен на 32-бит, а класс, на который он ссылается, - на 64-бит. Попробуйте посмотреть на это так вопрос и и это тоже. Между ними двумя, Вы должны быть в состоянии выяснить вашу проблему.

возможно, вы столкнулись с проблемой с вашим сайтом после развертывания на сервере.

затем необходимо настроить пул приложений для включения 32-разрядных приложений.

действия:

  1. открыть Диспетчер IIS
  2. нажмите на пулы приложений
  3. выберите пул приложений, который вы используете
  4. на правой панели выберите Дополнительные параметры...
  5. установить включить 32-разрядные приложения Правда

enter image description here

У меня только что было это сообщение об ошибке под управлением IIS Express в Visual Studio 2015. В моем случае мне нужно было запустить 64-разрядную версию IIS Express:

Инструменты - > Параметры - > проекты и решения - > веб-проекты
Установить флажок это говорит: "используйте 64-разрядную версию IIS Express для веб-сайтов и проекты."

скриншоты:

Screenshot of VS options for Web Project.

У меня была такая же проблема. Я установил "цель платформы" проекта A ("проект A"(правый клик)->свойства->сборка->" цель платформы") на x86, но сохранил проект B в"любом процессоре". Установка проекта B на "x86"исправила это.

У меня была эта проблема с запуском модульных тестов (xunit) в Visual Studio 2015 и наткнулся на следующее исправление:

Menu Bar -> Test -> Test Settings -> Default Processor Architecture -> X64

возможно, Вам придется изменить Приложение, Бассейн установка "включить 32-битные приложения" для TRUE в IIS7, если у вас есть по крайней мере 1 32-битная dll\exe в вашем проекте.

У меня была такая же проблема с несколькими проектами в одном решении, я закончил установку всех целевых фреймворков на .NET Framework 4 и x86 для целевого процессора, и он, наконец, успешно скомпилирован.

вы также можете увидеть эту проблему, если вы пытаетесь упаковать 64-битный проект с установщиком MSI в VS. ("причина в том, что родная прокладка упакована с помощью .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 действия.

решение:

  • удалить существующую исходную папку
  • явно установите "любой процессор" на платформе для всех сборок Visual Studio, включая зависимости (см. снимок экрана ниже).
  • повторно запустить сборку

VSO Screenshot

Я столкнулся с такой же проблемой. Он выскочил из ниоткуда, и это показалось мне странным.

в моментальном снимке исключения для FusionLog я увидел следующее в его сообщении:

... C:\Windows\Microsoft.NET\Framework64 ...

подробнее о журнале слияния:http://msdn.microsoft.com/en-us/library/e74a18c4 (v=vs. 110). aspx

все проекты имели целевой процессор AnyCPU. Я изменил проект приложения ( проект, который ссылается на все другие проекты) на целевой процессор x86. Теперь это работает.

Не уверен, как целевой процессор перепутать произошло без видимой причины, но это так.

Я также сталкиваются с этой проблемой в проекте, через несколько минут я нашел решение, эта проблема связана с конфигурацией процессора, Если вы используете Visual Studio 2010 или VS 2013, просто goto project ' s свойства и выберите Compile из боковой панели и там будет 5 выпадающих, 5-й выпадающий будет целевой процессор:, вы должны установить его на x86 или x64 в соответствии с вашими требованиями вместо любого процессора.

моя проблема была решена после замены его на x86.

Это также может произойти, просто имея несколько поддерживаемых платформ определена в приложение.конфигурации файл и, заставляя приложение работать в другой .NET framework, кроме одного упоминается первым в приложении.конфигурационный файл.

а также это срабатывает, когда у вас есть оба упомянутых фреймворка, доступных в вашей системе.

в качестве обходного пути, поднимите целевой фреймворк, который вы собираетесь использовать для отладки в приложение.конфигурации

пример: если вы пытаетесь запустить в .NET 4, конфигурационный файл должен иметь что-то похожее на это,

<supportedRuntime version="v4.0"/>
<supportedRuntime version="v2.0.50727"/>

в моем проекте для 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

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


несколько других упомянули выбор Any CPU исправить эту проблему.

есть несколько мест, где вам нужно это сделать, и это может быть не так просто, как выбрать из выпадающего списка. Это исправило его для меня:

1) Вы должны сделать это оба здесь:

enter image description here

2), а также в Configuration Manager (правой кнопкой мыши на решение)

enter image description here

но что, если его не существует???

нажмите кнопку New и выберите следующие настройки: (спасибо @RckLN)

enter image description here

Если вы используете LibreOffice из своей программы через CLI .net integration как и я, я получил ту же ошибку. Я использую старую версию LibreOffice в производственной среде на моем ПК я установил более новую версию, которая была в конфликте. просто удалите LibreOffice. Я нашел решение здесь .NET CLI: не удалось загрузить файл или сборку 'cli_cppuhelper'

Это может быть немного смешно, но у меня была такая же проблема с нормальным рабочим кодом. Я добавил StreamWriter и StreamReader, и это дало эту ошибку. Решение состояло в том, что я взял этот код в скобки комментариев, а затем отладил, и он снова начал работать

У меня также была эта проблема с запуском модульных тестов с помощью ReSharper в Visual Studio 2017 и исправлена с помощью следующей конфигурации:

enter image description here

также вы можете изменить настройки запуска теста ReSharper: https://resharper-support.jetbrains.com/hc/en-us/articles/207242715-How-to-run-MSTest-tests-using-x64-configuration

моя машина показала мне обновление BIOS, и я задался вопросом, Имеет ли это какое-то отношение к внезапному появлению этой ошибки. И после того, как я сделал обновление, ошибка была решена, и решение построено нормально.

вы пытаетесь запустить свой .exe-файл из cmd? Это была моя ошибка. Просто беги .EXE-файл, дважды щелкнув его. Если это .NET Core SCD для Windows 8.1 / Windows Server 2012 R2 x64.

Comments

    Ничего не найдено.