Почему я получаю BadImageFormatException при компиляции проекта .NET3.5 с MSBuild 4.0 - PullRequest
2 голосов
/ 13 октября 2010

У меня есть проект, который был создан с VS2008. Я пытаюсь построить его с MSBuild 4.0, но все еще ориентирован на 3.5 фреймворк. Когда я это делаю, я получаю исключение:

[exec] ResGen: ошибка RG0000: Не удалось загрузить ссылочную сборку "C: \ WINDOWS \ Microsoft.Net \ assembly \ GAC_MSIL \ PresentationUI \ v4.0_4.0.0.0__31bf3856ad364e35 \ PresentationUI.dll". Выявлено исключение BadImageFormatException, в котором говорится «Не удалось загрузить файл или сборку» C: \ WINDOWS \ Microsoft.Net \ assembly \ GAC_MSIL \ PresentationUI \ v4.0_4.0.0.0__31bf3856ad364e35 \ PresentationUI.dll 'или одна из его зависимостей. Эта сборка создается среда выполнения, более новая, чем текущая загруженная среда, и не может быть загружена. "

Обратите внимание, что он пытается загрузить версию PresentationUI.dll 4.0, хотя я компилирую для платформы 3.5. Не имеет значения, преобразовываю ли я проект в формат VS2010 или нет, ошибка та же.

Ответы [ 3 ]

3 голосов
/ 13 октября 2010

Проблема оказалась в том, что HintPath сборки PresentationUI.dll не совпадает с фактическим местоположением сборки.В этом случае MSBuild возвращается к поиску сборки в GAC.Поскольку MSBuild 4.0 работает в среде выполнения .NET 4.0, он выбирает версию сборки 4.0, которая несовместима с компилируемым проектом 3.5.

0 голосов
/ 17 июня 2015

Еще одна причина этого исключения - несоответствие целевой платформы всем проектам решения. Например, если несколько проектов имеют целевую платформу x86, а остальные - x64, вы получите это исключение.

0 голосов
/ 23 июля 2014

У меня возникла та же проблема, и при поиске решения в stackoverflow наткнулся на этот вопрос. Наконец, после НИОКР я получил решение.

Удалите старые ссылки и добавьте новые (если есть). Перейдите красширенный вариант компилятора и выберите Target Framework как 4.0.:) Это сработало. Наслаждайтесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...