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

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

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

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

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

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

может ли кто-нибудь помочь мне в этом....

6 ответов


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

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

  1. откройте свойства для ссылки DLL в вашем проекте и установите версию, специфичную для false.

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

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


NuGet CommonServiceLocator

Install-Package CommonServiceLocator

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

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

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


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

Я получил ту же проблему, я обновил фреймворк с 2.0 до 4.0, я пробовал все, что вы упомянули, но решение состояло в том, чтобы установить значения PublicKeyToken для каждой ссылки EnterpriseLibrary в Интернете.Файл config


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


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

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

ie:

    <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" />

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

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