web-dev-qa-db-fra.com

Impossible de charger le fichier ou l'assembly 'Microsoft.Practices.EnterpriseLibrary.Common' ou l'une de ses dépendances

J'ai cherché sur Google pour cela et ne pouvais pas trouver la solution au problème.

Mon site Web fait référence à DAL (dll personnalisée), qui fait référence à Enterprise Library Data Access Components.

J'ai ajouté la bibliothèque d'entreprise à partir du NuGet Package Manager et lorsque j'essaie de créer le site Web, cette erreur de compilation apparaît:

Erreur 44 Impossible de charger le fichier ou l'assembly 'Microsoft.Practices.EnterpriseLibrary.Common' ou l'une de ses dépendances. La définition du manifeste de l'Assemblée localisée ne correspond pas à la référence de l'Assemblée

J'ai essayé de définir le Copy Local = True dans le DAL pour le Enterprise Library dlls et les dll sont transférées dans le répertoire Bin du site Web avec le DAL dll, mais l'erreur persiste.

Quelqu'un peut-il me guider sur ce ....

14
Naveed Butt

Le problème est que la DLL que vous utilisez et celle référencée dans votre projet sont différentes. Je ne suis pas sûr de la différence entre le manifeste, mais il pourrait s'agir d'une version et/ou d'une clé publique.

Vous avez plusieurs choses à essayer:

  1. Ouvrez les propriétés de la référence DLL dans votre projet et définissez Version spécifique sur false.

  2. Supprimez la référence, supprimez la DLL du dossier bin et rajoutez la référence.

  3. Vous pourriez aussi avoir une version différente/incorrecte dans votre GAC. Pour vous assurer que vous utilisez toujours une version connue et spécifique, créez un dossier assemblys par rapport au répertoire de votre projet, copiez la dll dans ce répertoire, puis ajoutez une référence à la DLL dans le répertoire assemblies plutôt dans GAC ou ailleurs sur votre machine. Cela garantira que seule la version spécifique que vous avez ciblée pour l'application sera utilisée plutôt que toute version mise à jour sur votre ordinateur ultérieurement.

9
competent_tech

NuGet CommonServiceLocator

Install-Package CommonServiceLocator
4
Bishoy Hanna

Cette dll est susceptible de figurer dans le GAC sur les machines de développement dans le cadre de l'installation de certaines applications Windows (mes meilleurs suppositions étant Visual Studio ou SSMS) . notre meilleur pour garder le GAC aussi propre que celui du serveur de production.

Pour télécharger le fichier manuellement, vous pouvez aller à https://servicelocation.codeplex.com/

Pour corriger les avertissements et les erreurs de construction, vous devez simplement exécuter une commande NuGet pour installer le package CommonServiceLocation . Le paquet contient uniquement ce fichier dll. Microsoft n'a publié qu'une seule version (1.0.0.0) de ce fichier depuis 2008. Le fichier est entièrement compatible avec toutes les versions .NET et toutes les versions de Unity.

2
Believe2014

J'ai pu résoudre ce problème en supprimant deALLles références de journalisation dans le fichier app.config ::

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

c'est à dire:

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

Devient:

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

Ce n'est pas idéal, mais ça marche ...

L'outil de configuration de la bibliothèque d'entreprise définit les valeurs, vous devez donc surveiller cela. Je sais qu'il existe un moyen de dire au fichier de configuration d'accepter ces paramètres mal appariés - mais je ne sais pas comment.

0
jlo-gmail

La définition des valeurs PublicKeyToken pour chacune des références EnterpriseLibrary dans Web.Config a résolu le problème.

0
ebrecha