Подтвердить что ты не робот

Не удалось загрузить файл или сборку "EntityFramework" после переопределения EF 5.0.0.0 → 4.3.1.0

После слишком быстрого перехода на EF 5.0.0.0 RC и застрявшего с проектом .NET 4.5, который не будет использоваться для Windows Azure (.NET 4.0 и ниже), я решил перейти на EF 4.3.1.0.

Я не уверен в наилучшем способе выполнения этого типа миграции, но моя стратегия заключается в использовании "Manage NuGet Packages", который определяет, какие проекты ссылаются на пакет, снимите пакет с каждого проекта, установите замену и перепроверьте правильные проекты.

К сожалению, после этого мое решение создало титульный "FileLoadException".

Could not load file or assembly 'EntityFramework, Version=5.0.0.0, Culture=neutral,        
PublicKeyToken=b77a5c561934e089' or one of its dependencies. The located assembly 
manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

Я искал файлы решений, особенно packages.config для ссылок на EF 5.0.0.0 RC, но не смог найти их.

4b9b3361

Ответ 1

После неудачных попыток найти ссылки на EntityFramework в repositories.config и в других местах, я наткнулся на ссылку в Web.config, поскольку я редактировал ее, чтобы помочь с моим диагнозом.

СвязываниеRedirect с ссылкой 5.0.0.0, которое больше не было установлено, и это, по-видимому, является источником исключения. Честно говоря, я не добавлял эту ссылку в Web.config и, пытаясь продублировать ошибку в отдельном проекте, обнаружил, что она не добавлена ​​установщиком пакетов NuGet, поэтому я не знаю, почему она была там, но что-то добавленное он.

<dependentAssembly>
  <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>

Я решил заменить это эквивалентным элементом из рабочего проекта. NB ссылки на 5.0.0.0 заменяются на 4.3.1.0 следующим образом:

<dependentAssembly>
  <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-4.3.1.0" newVersion="4.3.1.0" />
</dependentAssembly>

Это сработало!

Затем я решил полностью удалить зависимую сборку для EntityFramework.

Он по-прежнему работает!

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

  • Что добавило зависимую сборку для EntityFramework к моему Web.config
  • Любые последствия удаления этих ссылок

Мне было бы интересно узнать.

Ответ 2

У меня есть эта проблема, и все, что я сделал, это убедиться, что я ссылаюсь на правильную инфраструктуру .Net во всех проектах, а затем просто изменим web.config из

Из

<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>

To

<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework" requirePermission="false"/>

Все работает..

Ответ 3

У меня была такая же проблема при обновлении старого проекта. Вот что я сделал, чтобы решить эту проблему:

  • Преобразование всех проектов в .NET 4.5.
  • Удален пакет NuGet для Entity Framework 5.
  • Переустановил пакет NuGet для платформы Entity Framework 5.
  • Убрано решение.
  • Восстановлено решение.

В проектах, которые использовали Entity Framework 5 и .NET 4, была установлена ​​версия 4.4 библиотеки Entity Framework. Как только я переключил версию .NET на 4.5 в проект, версия dll будет равна 5.

Моя проблема возникла из старых проектов на .NET 4 и более нового проекта под управлением .NET 4.5, поэтому в моем решении было 2 версии DLL.

Надеюсь, это поможет кому-то...

Ответ 4

При построении проекта, если в свойствах проекта он показывает, что он создается под Target.NET Framework 4.5, обновите его до 4.6 или 4.6.1. Затем сборка сможет найти Entity Framework 6.0 в файле Web.config. Этот подход решил мою проблему. Выбор целевой среды из свойств проекта

Ответ 5

Если вы использовали шаблон приложения Visual Studio 2012 ASP.NET Web Forms, то вы получили бы эту ссылку. Я предполагаю, что вы получите через Nuget вместо ссылки System.Data.Entity.

enter image description here

Ответ 6

Я получил то же сообщение об ошибке. За исключением того, что в моем сообщении об ошибке указано "Не удалось загрузить файл или сборку" EntityFramework, Version = 6.0.0.0... ", потому что я установил EF 6.1.1. Вот что я сделал для решения проблемы.

1) Я запустил консоль управления NuGet, нажав "Сервис" > "Диспетчер пакетов NuGet" > "Консоль диспетчера пакетов" 2) Я удалил установленную EntityFramework 6.1.1, введя следующую команду:

Uninstall-package EntityFramework

3) Как только я получил подтверждение, что пакет был успешно удален, я установил версию 5.0.0, введя следующую команду:

Install-Package EntityFramework -version 5.0.0

Проблема решена.

Ответ 7

У меня была аналогичная проблема с модульными тестами с использованием MSTEST под Jenkins. Исправление в моем случае состояло в том, чтобы удалить "Version = 6.0.0.0", как показано ниже:

Old:
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=xxxx" requirePermission="false" />

New:
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Culture=neutral, PublicKeyToken=xxxx" requirePermission="false" />

Мне пришлось внести это изменение в несколько файлов App.config и Web.config в моем многопроектном решении.

Ответ 8

У меня была аналогичная проблема с селеном: Я понизил свой селен с помощью NuGet и получил такое же сообщение об ошибке. Моим решением было удалить новые строки версии из файла app.config.

Ответ 9

У меня такая же проблема. Я получал System.Data.Entity.Infrastructure; ошибка, которая является лишь частью версии 5.0 или новее. Щелкните правой кнопкой мыши ссылку и выберите "Управление пакетом NuGet". В опции "Установленный пакет" удалите установленную платформу Entity FrameWork и установите версию 5.0. Это решает проблему. Я пытался вручную получить ссылку System.Data.Entity, которая не была успешной.

Ответ 10

public Configuration()
{
    AutomaticMigrationsEnabled = false;

    // register mysql code generator

    SetSqlGenerator("MySql.Data.MySqlClient", new MySql.Data.Entity.MySqlMigrationSqlGenerator());
}

Я выясню, что соединитель 6.6.4 не будет работать с Entity Framework 5, но с Entity Framework 4.3. Поэтому, чтобы понизить версию, выполните следующие команды в консоли диспетчера пакетов:

Uninstall-Package EntityFramework

Install-Package EntityFramework -Version 4.3.1

Наконец, я обновляю базу данных - снова и снова, и вуаля! Создаются схема и таблицы. Подождите, пока следующая версия соединителя не будет использоваться с Entity Framework 5.

Ответ 11

У меня была аналогичная проблема:

  • В моем проекте ASP.NET MVC я добавил базу данных Sql Server Compact (sdf) в папку App_Data. VS добавил ссылку на EntityFramework.dll, версия 4. *. Файл web.config был соответствующим образом обновлен с конфигурацией 4. *.

    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>

  • Я добавил новый проект для своего решения (проект уровня доступа к данным). Здесь я добавил файл EDMX. VS добавил ссылку на EntityFramework.dll, версия 5.0. Файл App.config был соответствующим образом обновлен с помощью конфигурации 5.0

    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />

При выполнении при чтении из базы данных приложение всегда выдает исключение Could not load file or assembly 'EntityFramework, Version=5.0.0.0 ....

Проблема была устранена путем удаления EntityFramework.dll v4.0 из моего проекта MVC. Я также обновил файл web.config с правильной версией 5.0. Затем все работало, как ожидалось.

Ответ 12

В ваших ссылках нажмите EntitiyFramework. Перейдите к свойствам и установите для определенной версии значение False. Это сработало для меня.