Не удалось загрузить файл или сборку EntityFramework
Я развернул приложение ASP.NET MVC 4, и домашняя страница загрузилась нормально, но когда я пытаюсь получить доступ к любой другой странице (которую все пытаются подключиться к базе данных SQL), я получаю эту ошибку:
Не удалось загрузить файл или сборку "EntityFramework, Version = 4.1.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089" или одну из его зависимостей. Установленное определение манифеста сборки не соответствует ссылке на сборку, (Исключение из HRESULT: 0x80131040) Описание: Необработанное исключение возникло во время выполнения текущего веб-запроса. Просмотрите трассировку стека для получения дополнительной информации об ошибке и ее возникновении в коде.
Сведения об исключении: System.IO.FileLoadException: не удалось загрузить файл или сборку "EntityFramework, Version = 4.1.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089" или одна из его зависимостей. Расположенное определение манифеста сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)
Я проверил файл Web.config и имеет следующие соответствующие записи:
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
...
<compilation targetFramework="4.0" />
Я прочитал все, что мог найти через Google, но ничего не помог до сих пор. Я знаю, что каким-то образом версия EF, на которой я построила приложение, отличается от версии, установленной на машине развертывания, но я мог бы использовать какое-то направление в том, как исправить эту разницу.
Ответы
Ответ 1
Кажется, вы используете EF5 на .NET Framework 4 (отсюда версия 4.4.0.0 в вашем файле конфигурации), но исключение, которое вы получаете, говорит об EF 4.1 (версия 4.1.0.0). Кажется, что некоторые сборки, которые вы используете, по-прежнему пытаются использовать 4.1, в то время как другие EF5 (4.4.0.0). Убедитесь, что вы ссылаетесь на одну и ту же сборку повсюду. Итак, вам нужно обновить все ссылки на использование EF5 и перестроить проект.
Btw. запись в файле конфигурации просто указывает .NET Framework на тип, который знает, как читать раздел конфигурации, поэтому этого недостаточно, чтобы обновить его, чтобы приложение работало с EF5
Ответ 2
вы можете попробовать следующее:
в проводнике решений перейдите к ссылке node и найдите ссылку EntityFramework
node, а затем в ее свойствах, установленных в False
свойство Specific Version
затем удалите идентификатор версии из web.config
, замените:
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
просто:
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework" requirePermission="false" />
таким образом, ошибка, связанная с несоответствующими версиями, должна быть решена.
по-прежнему, как и другие, говорится в комментариях, хорошо, если вы получите все свои ссылки от NuGet и зарегистрируйте все в своей системе управления версиями.
этот подход работал у меня много раз для многих сборок и больше не требует изменений в web.config, когда вы позже обновляетесь до более новой версии EF.
Ответ 3
Прежде чем переходить к обновлению всех ссылок, попробуйте перезапустить Visual Studio. Это разрешило проблему для меня.
Ответ 4
Я столкнулся с этим при попытке отладки проекта локально в IIS Express.
Я вручную выгрузил сайт, открыв параметры IIS Express и выбрав Stop Site
. Тогда я смог нормально работать.