Различни версии на EntityFramework в едно и също решение

Имам старо приложение Silverlight, което използва EF5 и не може да бъде надстроено до EF6. Имам друг проект, който използва EF6 с различен контекст, но получавам:

Не може да се зареди файл или сборка „EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089“ или една от неговите зависимости. Дефиницията на манифеста на разположената сглобка не съответства на препратката на сглобката. (Изключение от HRESULT: 0x80131040)

Предполагам, че това е така, защото EF5 вече е зареден (той е в основния проект, не ме питайте защо) и все още сочи към това dll вместо към EF6. Как мога да накарам това да работи?

Добавих:

   <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
        <codeBase version="5.0.0.0" href="/bgC:\Projects\project\2.1.1EF2\packages\EntityFramework.5.0.0\lib\net45\EntityFramework.dll"/>
        <codeBase version="6.0.0.0" href="/bgC:\Projects\project\2.1.1EF2\packages\EntityFramework.6.1.0\lib\net45\EntityFramework.dll"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

към моя основен web.config след предложение на lgos, но сега получавам:

{"[A]System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection не може да бъде прехвърлен към [B]System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection. Тип A произхожда от 'EntityFramework, Version=5.0.0.0, Culture= неутрален, PublicKeyToken=b77a5c561934e089" в контекста "По подразбиране" на място "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\project211ef\97babe28\e7ea3fa9\assembly\dl3\01275099\70646f08_d 86ecf01\ EntityFramework.dll". Тип B произхожда от "EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" в контекста "По подразбиране" на местоположение "C:\Projects\project\2.1.1EF2\packages\EntityFramework. 6.1.0\lib\net45\EntityFramework.dll'."}

Изглежда, че все още се опитва да използва EF5, въпреки че има достъп до раздела за обекти EF6.

Поправих това, като добавих обвързващи пренасочвания. В основния web.config пренасочвам към новата версия, а след това в под web.config пренасочвам към старата версия.


person Shawn    schedule 27.05.2014    source източник
comment
Бихте ли могли да доразвиете малко повече последното изречение от публикацията си? Реших проблема с DLL, но останах на тази грешка [A] не може да бъде прехвърлена на [B].   -  person Jake Wood    schedule 01.08.2016
comment
@JakeWood Всичко това изчезва от паметта, но iirc имах основния си web.config с пренасочване на новата версия и след това в папката, където беше моят проект silverlight, имах друг web.config с другото пренасочване.   -  person Shawn    schedule 02.08.2016


Отговори (1)


Възможно е да използвате две различни версии на асемблиране в едни и същи приложения, като дефинирате свързване на асемблиране в конфигурационния файл. Мисля, че този отговор трябва да ви помогне.

person Igos    schedule 27.05.2014