2012-04-29 14 views
8

Sto provando a creare un progetto che utilizza la libreria LinqToExcel. Inoltre, sto usando log4net per scrivere registri.Errore durante il tentativo di caricare l'assembly log4net

Il mio problema è iniziato quando sto tryomg Per eseguire questo righe di codice:

var excel = new ExcelQueryFactory(ExcelPath); 
return (from r in excel.Worksheet<RowDetails>(company.Name) 
     select r).Count(); 

Questa linea eccezione generata:

ERRORE MyProj.Program principale: System.IO.FileLoadException: Could non caricare file o assembly 'log4net, versione = 1.2.11.0, Culture = neutro, PublicKeyToken = 669e0ddf0bb1aa2a' o una delle sue dipendenze. La definizione manifest di assembly individuata da non corrisponde al riferimento del assembly. (Eccezione da HRESULT: 0x80131040) Nome file: 'log4net, Version = 1.2.11.0, Culture = neutral, PublicKeyToken = 669e0ddf0bb1aa2a'

E 'importante notare che io sono riuscito ad utilizzare log4net prima di questa linea.

Apprezzerei qualsiasi aiuto.

Grazie mille!

+2

Sembra che si stiano caricando diverse versioni dell'assembly log4net. Potrebbe essere che tu abbia diversi log4net.dll nel tuo file system, e quello sbagliato viene prelevato per essere caricato? –

+0

Ho lo stesso problema; la firma coincide con il mio progetto di implementazione, la dll è distribuita nella stessa directory dell'assembly, ma ottengo questo errore. La prima parte comunque. –

+0

1.2.11+ è disponibile in due versioni: "vecchia chiave" e "nuova chiave": sembra che tu abbia bisogno del nuovo sapore della chiave ... –

risposta

6

Come sottolineato da marc_s, questo problema si verifica in genere quando si tenta di caricare diverse versioni dello stesso assembly. Assicurarsi che il progetto utilizzi la stessa versione di assembly della libreria LinqToExcel, che dipende anche da log4net. Anche eventuali altre librerie dovrebbero usare la stessa versione di assemblaggio. Per risolvere il problema, si può anche provare a utilizzare assembly reindirizzare nel vostro app.config in questo modo:

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral" /> 
     <bindingRedirect oldVersion="1.2.10.0" newVersion="1.2.11.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
6

tenta di installare usando NuGet

Install-Package log4net -Version 2.0.0 

versione 2.0.0 è per log4net 1.2. 11

1

Sto avendo problemi simili. Penso che il problema sia in LinqtoExcel che fa riferimento a Log4Net versione 1.2.11, e tu hai fatto riferimento a Log4Net separatamente e ottieni l'ultima versione 1.2.13. Nell'output di build finirai con 1.2.13, e quando LintoExcel chiama Log4Net si aspetta 1.2.11 ed ocures di errore.

0

Ho riscontrato questo problema dopo l'aggiornamento di log4net tramite NuGet, solo per scoprire che la versione più recente è stata firmata con una chiave diversa.

È possibile prendere la versione "oldkey" da the apache log4net site e quindi ha funzionato per me.

Problemi correlati