2011-12-08 9 views
10

Ho cercato Google per questo e non sono riuscito a trovare la soluzione al problema.Impossibile caricare il file o l'assembly 'Microsoft.Practices.EnterpriseLibrary.Common' o una delle sue dipendenze

Il mio sito Web fa riferimento a DAL (dll personalizzata) che fa riferimento a Componenti di accesso ai dati della libreria aziendale.

ho aggiunto l'Enterprise Library dal NuGet Package Manager e quando provo a costruire il sito web questo errore di compilazione si apre:

Errore 44 Impossibile caricare il file o l'assembly 'Microsoft.Practices.EnterpriseLibrary.Common' o una delle sue dipendenze. Definizione manifesto dell'assembly situato non corrisponde al riferimento all'assembly

Ho provato a fissare il Copy Local = True nel DAL per il Enterprise Library dlls e le DLL sono trasferiti nella directory Bin del sito insieme a DAL dll, ma ancora il pop di errore su.

Qualcuno mi può guidare su questo ....

+0

Assicurarsi che tutte le DLL EL siano presenti nella cartella, compresa quella di .Common. –

+1

Ho già accennato sopra, che le DLL sono già state copiate nella cartella bin del sito web –

+0

Questo issuse quando il progetto è impostato su .net framework client profile prova a cambiarlo in full dot net? Sory se è la risposta errata – adopilot

risposta

8

Il problema è che la DLL che si sta utilizzando e quello che viene fatto riferimento nel progetto sono diversi. Non sono sicuro di quale sia la differenza nel manifest, ma potrebbe essere la versione e/o la chiave pubblica.

avete un paio di cose da provare:

  1. Aprire le proprietà per il riferimento DLL nel progetto e impostare versione specifica su false.

  2. Rimuovere il riferimento, eliminare la DLL dalla cartella bin e aggiungere nuovamente il riferimento.

  3. Si potrebbe anche avere una versione diversa/errata nel proprio GAC. Per assicurarsi di utilizzare sempre una versione specifica e specifica, creare una cartella di assembly relativa alla directory del progetto, copiare la DLL in quella directory e aggiungere un riferimento alla DLL nella directory degli assembly anziché una in GAC o altrove sulla tua macchina. Ciò garantirà che verrà utilizzata solo la versione specifica che è stata scelta come target per l'applicazione e non tutte le versioni aggiornate sul computer in un secondo momento.

+1

L'impostazione di 'Version Specific = true' ha risolto il problema. Penso che sia dovuto a più versioni di 'EnterpriseLibrary' installate sul mio sistema e creando un'altra directory e posizionando le DLL ci potrebbe avere lo stesso effetto ... –

+0

Per me (2) ha funzionato. Ho cancellato i riferimenti che stavano dando errore e li ho letti di nuovo –

4

NuGet CommonServiceLocator

Install-Package CommonServiceLocator 
2

questa DLL è probabile che sia nel GAC su macchine di sviluppo come parte di qualche installazione dell'applicazione finestre (i miei migliori congetture sono Visual Studio o SSMS). Ecco perché è probabile che riceviamo avvertimenti o errori sulla macchina di compilazione, che facciamo del nostro meglio per mantenere il GAC pulito come quello del server di produzione.

Per scaricare il file manualmente, si può andare a https://servicelocation.codeplex.com/

Per fissare le avvertenze di compilazione e gli errori, è sufficiente eseguire un comando per installare il NuGet CommonServiceLocation package. Il pacchetto contiene solo questo file dll. Microsoft ha rilasciato solo la versione 1.0.0.0 di questo file dal 2008. Il file è completamente compatibile con tutte le versioni .NET e tutte le versioni Unity.

0

Grazie per queste informazioni

Ho avuto lo stesso problema, ho aggiornato il Quadro 2,0-4,0, ho provato tutto quello che lei ha citato, ma la soluzione era quella di impostare i valori publicKeyToken per ciascuna di riferimento EnterpriseLibrary in il file Web.Config

0

Stesso problema! Ho appena completato la compilazione e ricostruito il progetto. Quindi, tutte le vecchie cose sono andate e le versioni corrette sono state sostituite. Risolto.

0

sono stato in grado di risolvere questo problema rimuovendo dal TUTTI i riferimenti di registrazione nel file app.config ::

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

cioè:

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

diventa:

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

Questo non è l'ideale, ma funziona ...

Lo strumento di configurazione di Enterprise Library, reimposta i valori, quindi è necessario verificarlo. So che c'è un modo per dire al file di configurazione di accettare queste impostazioni errate - ma io non sono sicuro di come.

Problemi correlati