2014-01-15 4 views
0

Некоторое время назад я недавно обновился от VS2008 до VS2013, который отключился без заминки. Затем я обновил целевую структуру для каждого из решений в моем проекте (веб-портал, три службы, уровень доступа к данным и библиотека отчетов). После изменения структуры, я получил эту ошибку:Проблемы с переносом .NET 3.5 в .NET 4.5.1

Error 174 Assembly 'DAL', Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' uses 'System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=[token]' which has a higher version than referenced assembly 'System.Data.Entity, Version=3.5.0.0, Culture=neutral, PublicKeyToken=[token]'  

Так я обновил ссылку на наш файл web.config в 4.0.0.0:

<add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=[token]"/> 

Это зафиксировали немедленную ошибку (конечно), но Теперь я столкнулся с 8 новыми ошибками, которые все такого рода:

Error 174 The type 'System.Data.Objects.ObjectContext' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=[token]'. 

Это брошено, когда я называю

DAL.App_Data.MyEntities me = new DAL.App_Data.MyEntities(); 

Я проверил, и оба DAL и проекта, из которого он вызывается, имеют ссылки на System.Data.Entity версии 4.0.0.0. DAL имеет его в файле проекта, а другой - в файле web.config.

+0

Я предполагаю, что эти ошибки во время компиляции? Вы обновили ссылку проекта на «System.Data.Entity»? –

ответ

0

Вы пытались повторно добавить System.Data.Entity dll? Ошибка говорит, что вы все еще не указали эту ссылку.

+0

Простите, я не совсем понимаю, что вы подразумеваете под этим - не могли бы вы уточнить «повторное добавление»? – Honanin

+0

Он, вероятно, означает удаление старой плохой ссылки, добавьте правильную ссылку. – Dave

1

Вы пытались добавить переадресацию привязки в свои файлы конфигурации?

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <dependentAssembly> 
     <assemblyIdentity name="System.Data.Entity" publicKeyToken="[token]" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> 
    </dependentAssembly> 
    </assemblyBinding> 
</runtime> 

Даже если VS сообщает вам, что версии dll 4.0, дважды проверьте папку bin. Возможно, он навешивается на более старую версию. Вы всегда можете удалить файлы из корзин bin и obj, а затем перестроить. После перестройки снова дважды проверьте, что на самом деле было скопировано в папку bin, чтобы убедиться, что это правильная версия.

Update

  1. В обозревателе решений VS под свой проект, разверните папку Ссылки.
  2. Найти запись для System.Data.Entity.
  3. Если вы не нашли, перейдите к шагу №5.
  4. Щелкните правой кнопкой мыши сборку и удалите ее.
  5. Щелкните правой кнопкой мыши папку Ссылки и нажмите кнопку Добавить ссылку
  6. Нажмите Сборки в левой панели, а затем искать System.Data.Entity
  7. Установите флажок рядом с System.Data.Entity 4.0.0.0 и нажмите кнопку ОК ,
  8. Восстановите решение и повторите попытку.
+0

Я попытался добавить этот блок dependAssembly, но это не повлияло. Я просматриваю файлы bin/obj, и у меня нет ничего напоминающего System.Data.Entity, возможно, это часть проблемы? – Honanin

+0

Да. Если сборка не копируется в папку bin, ASP.NET не может найти ее при запуске приложения. – danludwig

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