Не удалось загрузить файл или сборку "Microsoft.Practices.EnterpriseLibrary.Common" или одна из его зависимостей

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

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

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

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

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

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

Ответ 1

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

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

  • Откройте свойства для ссылки DLL в вашем проекте и установите для параметра Version Specific значение false.

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

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

Ответ 2

NuGet CommonServiceLocator

Install-Package CommonServiceLocator

Ответ 3

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

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

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

Ответ 4

Спасибо за эту информацию

У меня такая же проблема, я обновил Framework с 2.0 до 4.0, я пробовал все, что вы упомянули, но решение заключалось в том, чтобы установить значения PublicKeyToken для каждой ссылки EnterpriseLibrary в файле Web.Config

Ответ 5

Такая же проблема! Я просто очистил сборку и восстановил проект. Итак, все старые вещи ушли и исправлены версии. Решаемые.

Ответ 6

Мне удалось решить эту проблему, удалив из ВСЕ ссылки ведения журнала в файле 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" />

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

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