Не удалось загрузить файл или сборку «Microsoft.Practices.EnterpriseLibrary.Common» или одну из ее зависимостей. - PullRequest
15 голосов
/ 08 декабря 2011

Я искал в Google это и не смог найти решение проблемы.

Мой сайт ссылается на DAL (пользовательский dll), который ссылается на компоненты доступа к данным Enterprise Library.

Я добавил Enterprise Library из NuGet Package Manager, и когда я пытаюсь создать сайт, появляется ошибка компиляции:

Ошибка 44 Не удалось загрузить файл или сборку 'Microsoft.Practices.EnterpriseLibrary.Common' или одну из ее зависимостей. Определение манифеста обнаруженной сборки не соответствует ссылке на сборку

Я попытался установить Copy Local = True в DAL для Enterprise Library dlls, и DLL-файлы переносятся в каталог Bin веб-сайта вместе с DAL dll, но все равно появляется ошибка.

Может ли кто-нибудь наставить меня в этом ....

Ответы [ 5 ]

10 голосов
/ 08 декабря 2011

Проблема в том, что используемая вами DLL и ссылка на нее в вашем проекте отличаются. Я не уверен, в чем разница в манифесте, но это может быть версия и / или открытый ключ.

У вас есть пара вещей, чтобы попробовать:

  1. Откройте свойства для ссылки на DLL в вашем проекте и задайте для параметра «Версия» значение false.

  2. Удалите ссылку, удалите DLL из папки bin и заново добавьте ссылку.

  3. У вас также может быть другая / неправильная версия в вашем GAC. Чтобы убедиться, что вы всегда используете определенную известную версию, создайте папку сборок относительно каталога вашего проекта, скопируйте dll в этот каталог и добавьте ссылку на DLL в каталоге сборок, а не в GAC или где-либо еще. на твоей машине. Это гарантирует, что будет использоваться только та версия, которую вы выбрали для приложения, а не любая версия, которая будет обновлена ​​на вашем компьютере позднее.

4 голосов
/ 23 октября 2013

NuGet CommonServiceLocator

Install-Package CommonServiceLocator
2 голосов
/ 08 сентября 2014

Эта dll, вероятно, будет в GAC на машинах разработчика как часть установки некоторых приложений Windows (мои лучшие догадки - Visual Studio или SSMS).Вот почему мы можем получать предупреждения или ошибки на сборочной машине, и мы стараемся, чтобы GAC оставался таким же чистым, как и рабочий сервер.

Чтобы загрузить файл вручную, перейдите на https://servicelocation.codeplex.com/

Чтобы исправить предупреждения и ошибки сборки, вам просто нужно запустить команду NuGet для установки CommonServiceLocation пакета .Пакет содержит только этот один файл DLL.Microsoft выпустила только 1 версию (1.0.0.0) этого файла с 2008 года. Файл полностью совместим со всеми версиями .NET и всеми версиями Unity.

0 голосов
/ 04 апреля 2017

Мне удалось решить эту проблему, удалив из ALL Ссылки ведения журнала в файле app.config ::

, Version=6.0.0.0, Culture=neutral, PublicKeyToken=null

, т.е.:

    <section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, 
Microsoft.Practices.EnterpriseLibrary.Logging, 
Version=6.0.0.0, Culture=neutral, PublicKeyToken=null" 
requirePermission="true" />

Становится:

     <section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, 
Microsoft.Practices.EnterpriseLibrary.Logging" 
requirePermission="true" />

Это не идеально, но оно работает ...

Средство конфигурирования Enterprise Library, устанавливает значения обратно, поэтому вам нужно следить за этим.Я знаю, что есть способ сообщить конфигурационному файлу, что он принимает эти несоответствующие настройки, но я не знаю, как.

0 голосов
/ 23 декабря 2015

Установка значений PublicKeyToken для каждой из ссылок EnterpriseLibrary в Web.Config исправила это для меня.

...