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

Entity Framework 5 - Не удалось загрузить файл или сборку EntityFramework, Version = 5.0.0.0

Я пытаюсь использовать Entity Framework 5 для своего проекта, но у меня, похоже, есть проблема, связанная с установкой сборки. И так как я установил это изначально с помощью nuget, я не уверен, что мне нужно сделать, чтобы заставить это работать, как я ожидаю. Любая помощь в том, что мне нужно сделать, чтобы исправить эту проблему, пожалуйста?

* System.IO.FileNotFoundException: Не удалось загрузить файл или сборку EntityFramework, Version = 5.0.0.0, Culture = Neutral, PublicKeyToken = b77a5c561934e089 'или одна из его зависимостей. Система не может найти указанный файл. WRN: Регистрация привязки к сборке выключен. Чтобы включить регистрацию сбоев привязки сборок, установите значение register., *

, используя журнал слияния, я получил

*** Assembly Binder Log Entry  (7/17/2012 @ 9:29:09 PM) ***

The operation failed.
Bind result: hr = 0x80070002. The system cannot find the file specified.

Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
Running under executable  C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO 11.0\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\TESTWINDOW\vstest.executionengine.x86.exe
--- A detailed error log follows. 

=== Pre-bind state information ===
LOG: User = WORKALOT\Tokorie
LOG: DisplayName = Budget.Data, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
 (Fully-specified)
LOG: Appbase = file:///C:/Development/Summer2012BudgetApp/Budget.Service.Test/bin/Release
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = vstest.executionengine.x86.exe
Calling assembly : Budget.Lib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO 11.0\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\TESTWINDOW\vstest.executionengine.x86.exe.Config
LOG: Using host configuration file: 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Attempting download of new URL file:///C:/Development/Summer2012BudgetApp/Budget.Service.Test/bin/Release/Budget.Data.DLL.
LOG: Attempting download of new URL file:///C:/Development/Summer2012BudgetApp/Budget.Service.Test/bin/Release/Budget.Data/Budget.Data.DLL.
LOG: Attempting download of new URL file:///C:/Development/Summer2012BudgetApp/Budget.Service.Test/bin/Release/Budget.Data.EXE.
LOG: Attempting download of new URL file:///C:/Development/Summer2012BudgetApp/Budget.Service.Test/bin/Release/Budget.Data/Budget.Data.EXE.
LOG: All probing URLs attempted and failed.
4b9b3361

Ответ 1

Запустите инструмент журнала слияния, как было предложено сообщением об ошибке, чтобы получить дополнительную информацию о том, где среда выполнения ищет DLL, чтобы вы могли лучше понять, почему она терпит неудачу.

Существует хорошая статья о Fusion-loggning от Scott Hanselman, как вы ее активируете и т.д., а затем просто запускайте fuslogw как администратор из командной строки.

Обновление

Журнал слияния показывает нам, где среда выполнения ищет ваши библиотеки DLL, в этом случае Budget.Data, которые она ищет в:

bin/Release/Budget.Data.DLL 
bin/Release/Budget.Data/Budget.Data.DLL
bin/Release/Budget.Data.EXE
bin/Release/Budget.Data/Budget.Data.EXE

Вы можете проверить, действительно ли DLL находится в одном из этих каталогов? Если проверить целевую структуру вашей DLL (проверьте свойства проекта)? Является ли целевая структура совместимой с EF 5.0? Какова целевая структура ваших других сборок (если есть)

Ответ 2

Вы уверены, что путь правильный? Попробуйте удалить ссылку "Entity Framework" и повторно добавить ее вручную.

Щелкните правой кнопкой мыши, чтобы добавить ссылку, затем просмотрите здесь и добавьте dll:

C:\PATH\К\Solution\пакеты\EntityFramework.5.0.0-гс\Lib\net45\EntityFramework.dll

Также убедитесь, что путь указан в файле csproj проекта (щелкните правой кнопкой мыши проект, выгрузите, щелкните правой кнопкой мыши еще раз, а затем "Редактировать имя_проекта" ), вы должны иметь что-то вроде этого:

<Reference Include="EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\packages\EntityFramework.5.0.0-rc\lib\net45\EntityFramework.dll</HintPath>
</Reference>

Другие вещи, которые нужно проверить, - это файл packages.config, чтобы убедиться, что он указан там, а также убедитесь, что для свойства Entity Framework свойство "Копировать локальное" установлено значение true. Возможно, вам также понадобится ссылаться на сборку в файле web.config, если вы используете ее в projcet ASP.NET или что-то подобное.

Ответ 3

  • Установите флажок "скопировать локальный"
  • Проверьте, что сборка dll существует в папке с открытым исходным кодом
  • Проверьте ссылку в решении. Попробуйте ссылку readd.
  • Проверьте версию и открытый ключ сборки и файл решения (вы можете открыть файл решения visual studio и отредактировать его в текстовом редакторе. Попробуйте удалить открытый ключ из файла решения и установить правильную версию, если он отличается)
  • Также эта проблема может возникнуть, когда некоторая сборка, которую вы добавляете к ссылкам на ссылки на сборку, которые у вас не были. Если это попытается получить правильную сборку или попробуйте перестроить сборку с имеющимися у вас библиотеками.

Удачи!

Ответ 4

У меня на самом деле была эта проблема на днях при работе с контролем версий (git) и пакетом Nuget для ef5-rc. Что я решил решить, так это удалить (удалить в проводнике Windows) сборку из папки "пакеты" решений. Когда я перезапустил Visual Studio Nuget, я дал возможность восстановить пакеты. Надеюсь, это поможет!

Ответ 5

Какие блоки вы используете из EntLib5? Поскольку вы вызываете его из DAL, я предполагаю, что вы вызываете Microsoft.Practice.EnterpriseLibrary.Data.

Если это так, я просто хочу указать, что мне всегда нужны все следующие DLL, чтобы заставить EntLib5 DAAB работать для меня.

Microsoft.Practices.EnterpriseLibrary.Common
Microsoft.Practices.EnterpriseLibrary.Data
Microsoft.Practices.Unity
Microsoft.Practices.Unity.Interception

Отсутствие какой-либо из этих ссылок приведет к ошибке моего проекта во время выполнения, даже если компиляция будет прекрасной.

Я также попробовал запустить установщик EntLib5 из http://www.microsoft.com/en-us/download/details.aspx?id=15104, поскольку он прикрепляет библиотеки DLL к GAC.

Ответ 6

В итоге я решил это для проекта, над которым я работаю. В итоге я удалил все в папке .bin для проекта, который выдавал ошибку. Я предполагаю, что эти файлы переписываются только в определенное время или когда DLL файл изменяется и т.д. И не обрабатывается миграцией. Удаление этих файлов, очистка решения и перестройка, казалось, решили проблему для меня.

Ответ 7

Я тоже получаю эту проблему. Поэтому я немного осмотрелся и нашел следующее.

В разделе "Общие проблемы" http://msdn.microsoft.com/en-us/data/jj618307.aspx говорится...

"Обычно это означает, что вы используете приложение .NET 4 без файла Redirect.config. Вам нужно скопировать Redirect.config в то же место, что и migrate.exe, и переименовать его в файл migrate.exe.config."

К сожалению, я не знаю, где находится Redirect.config. Невозможно найти его где-либо в содержимом каталога пакета NuGet.