it-swarm.com.ru

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

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

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

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

*** 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.
13
Kobojunkie

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

Есть хорошая статья о Fusion-loggning Скотта Хансельмана, о том, как ее включить и т.д., Затем просто запустите fuslogw от имени администратора из командной строки.

Обновление

Журнал Fusion показывает нам, где среда выполнения ищет ваши 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? Какова целевая структура ваших других сборок (если есть) 

5
Tommy Grovnes

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

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

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

Также убедитесь, что путь указан в файле csproj проекта (щелкните правой кнопкой мыши проект, выгрузите его, снова щелкните правой кнопкой мыши, а затем "Edit projectname.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 «Copy Local» задано значение true. Возможно, вам также придется ссылаться на сборку в вашем файле web.config, если вы используете его в проекте ASP.NET или в чем-то подобном.

4
Shahin Dohan

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

1
thomrand
  1. Отметьте флажок «Копировать локально»
  2. Проверьте, что dll сборки существует в папке out
  3. Проверьте ссылку в решении. Попробуйте прочитать ссылку.
  4. Проверьте версию и открытый ключ сборки и в файле решения (Вы можете открыть файл решения Visual Studio и отредактировать его в текстовом редакторе. Попробуйте удалить открытый ключ из файла решения и установить правильную версию, если она отличается)
  5. Также эта проблема может возникнуть, когда некоторые сборки, которые вы добавляете в решение, ссылаются на сборку, которой у вас не было. Если это попытаться получить правильную сборку или перестроить сборку с имеющимися библиотеками.

Удачи!

1
gabba

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

0
BigDubb

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

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

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

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

0
TheMagnificent11

Какие блоки вы используете из 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.

0
Wulfram