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.
7 ответов
Запустите инструмент журнала слияния, как указано в сообщении об ошибке, чтобы получить больше информации о том, где среда выполнения ищет 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? Какова целевая структура ваших других сборок (если есть)
Вы уверены, что путь правильный? Попробуйте удалить ссылку "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 или в чем-то подобном.
У меня на самом деле была эта проблема на днях, когда я работал с системой контроля версий (git) и пакетом Nuget для ef5-rc. Для меня проблема была в том, чтобы удалить (удалить в проводнике Windows) сборку из папки "пакеты" решений. Когда я перезапустил Visual Studio, Nuget дал мне возможность восстановить пакеты. Надеюсь это поможет!
- Отметьте флажок "Копировать локально"
- Проверьте, что dll сборки существует в папке out
- Проверьте ссылку в решении. Попробуйте прочитать ссылку.
- Проверьте версию и открытый ключ сборки и в файле решения (Вы можете открыть файл решения Visual Studio и отредактировать его в текстовом редакторе. Попробуйте удалить открытый ключ из файла решения и установить правильную версию, если она отличается)
- Также эта проблема может возникнуть, когда некоторые сборки, которые вы добавляете в решение, ссылаются на сборку, которой у вас не было. Если это попытаться получить правильную сборку или попробуйте пересобрать сборку с имеющимися у вас библиотеками.
Удачи!
Какие блоки вы используете из 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.
Я тоже получаю эту проблему. Поэтому я немного осмотрелся и обнаружил следующее.
В разделе "Общие проблемы" http://msdn.microsoft.com/en-us/data/jj618307.aspx говорится...
"Обычно это означает, что вы запускаете приложение.NET 4 без файла Redirect.config. Вам нужно скопировать Redirect.config в то же место, что и migrate.exe, и переименовать его в migrate.exe.config".
К сожалению я не знаю где Redirect.config
расположен. Невозможно найти его где-либо в содержимом каталога пакета NuGet.
Я решил это для проекта, над которым я работаю. Я закончил тем, что удалил все в папке.bin для проекта, который выдавал ошибку. Я предполагаю, что эти файлы перезаписываются только в определенное время или при изменении.dll и т. Д. И не были обработаны при перенастройке. Удаление этих файлов, очистка решения и перестройка, казалось, решили проблему для меня.