1

У нас есть команда разработчиков, работающих над решением Asp.Net MVC5, и часто после выполнения git pull, чтобы получить другие изменения разработчиков, нам необходимо обновить наши локальные базы данных с помощью любых новых Миграций базы данных (entity рамки 6.1.3), которые были добавлены.Ошибка обновления базы данных - BadImageFormatException

Мы запускаем базу данных обновлений в консоли диспетчера пакетов для обновления базы данных. Это сработало, пока мы не сменили все проекты на компиляцию вывода x64. Это было необходимо для разрешения требований к памяти.

Однако теперь я получаю:

System.BadImageFormatException: Could not load file or assembly 'My.Data' or one of its dependencies. 
    An attempt was made to load a program with an incorrect format. 

Когда я бегу Update-database. Я очистил все папки bin и obj перед перекомпиляцией (чтобы гарантировать, что все выходные данные будут одного формата x64).

Похоже, проблема в том, что файл migrate.exe несовместим с x64. SO, Original MSDN article.

Однако это сообщение для EF5. Это все еще так? И есть ли обходной путь? если не кажется странным, это не так, как если бы x64 или EF были новыми дополнениями к Visual studio.

ответ

1

Удалось найти ответ.

Проблема заключается в том, что команда Enable-миграции, как представляется, имеют жестко запрограммированный путь, где EF выглядит для встроенных библиотек DLL вашего проекта в /bin/Debug, независимо от того, что фактический путь сборки. Когда вы меняете проект на x64, Visual Studio спокойно меняет конструкцию вашего проекта путь к/bin/x64/Debug - в то время как EF продолжает искать/bin/Debug. То, что причины этого расплывчатый System.BadImageFormatException

Это безвредно просто изменить путь сборки проекта в/bin/Debug и волшебно, все начинает работать, как это предполагается.

https://stackoverflow.com/a/23666717

Смежные вопросы