Aggiunto di recente log4net.dll al nostro oggetto dati. Il nostro oggetto di dati costruisce perfettamente, ma quando si tenta di costruire qualcosa che fa riferimento i nostri dati oggetto si ottiene il seguente errore:Come risolvere "Nessun modo per risolvere conflitti tra" errore?
No way to resolve conflict between "log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" and "log4net, Version=1.2.9.0, Culture=neutral, PublicKeyToken=b32731d11ce58905". Choosing "log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" arbitrarily.
ho trovato la seguente thread che mi ha permesso di ottenere ulteriori informazioni sul problema.
log4net è utilizzato per una varietà di cose nel nostro progetto. Ad esempio, crystal installato 1.2.9 nel GAC. So che gli infragicci usano 1.2.10.
Abbiamo una directory specifica - chiamiamola c:\references
- dove costruiamo tutte le nostre DLL e che tutte le nostre applicazioni utilizzano per fare riferimento alle nostre DLL interne. Così ho impostato in modo specifico il mio riferimento nel nostro oggetto dati a c: \ references \ log4net.dll che è la versione 1.2.11. Il che è strano perché nel messaggio di errore sopra non vedi 1.2.11. La DLL è referenziata con la versione specifica: = True & Copia locale: = True. Ho controllato la directory di build & 1.2.11 di log4net è stato spostato correttamente.
Se aiuta qui ci sono alcuni dei messaggi di errore dettagliati:
There was a conflict between "log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" and "log4net, Version=1.2.9.0, Culture=neutral, PublicKeyToken=b32731d11ce58905".
No way to resolve conflict between "log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" and "log4net, Version=1.2.9.0, Culture=neutral, PublicKeyToken=b32731d11ce58905". Choosing "log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" arbitrarily.
References which depend on "log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" [C:\Windows\assembly\GAC_32\log4net\1.2.10.0__692fbea5521e1304\log4net.dll].
C:\Windows\assembly\GAC_MSIL\CrystalDecisions.Shared\13.0.2000.0__692fbea5521e1304\CrystalDecisions.Shared.dll
References which depend on "log4net, Version=1.2.9.0, Culture=neutral, PublicKeyToken=b32731d11ce58905" [C:\Program Files (x86)\Business Objects\Common\4.0\managed\log4net.dll]. c:\references\DBObjectAdoNet.dll
Project file item includes which caused reference "c:\references\DBObjectAdoNet.dll".
Aggiornamento: Finora l'unico modo che ho trovato per correggere l'errore è quello di riferimento log4net in nulla riferimento DBObjectAdoNet.dll. Questa non è davvero una soluzione utilizzabile dal momento che quasi lo utilizza tutto il nostro intero sistema.
2nd Update: Ho provato a inserire log4net nel GAC pensando che avrebbe risolto il problema, ma non ci sono riuscito.
3 ° aggiornamento: ho effettuato una chiamata di supporto a Microsoft. Vogliono che io usi Assembly.LoadFrom() che sono molto, molto titubante, dato che eseguiamo più di 300.000 chiamate in un'applicazione e che richiederebbero una riflessione per ogni chiamata che rallenterebbe un po 'le cose.
Ho scoperto che se disinstalla il runtime di cristallo sulla mia macchina l'errore scompare che non ha molto senso perché l'unica cosa che fa, per quanto ne so, è rimuovere log4net 1.2.10.0 da il GAC sotto le cartelle .NET Framework 2.0, che non dovrebbe avere importanza perché l'app è un'app .NET framework 4.
'quote' Ho scoperto se disinstalla il runtime di cristallo sulla mia macchina'/quote' - domanda: ** runtime di cristallo **? Cosa ** crystal runtime **? –
@Robert Crystal 11 x86 per .Net Framework 4. Penso che quando ho avuto il problema la stessa cosa è successa anche con la versione x64. – coding4fun
Ho aggiunto un riferimento alla versione di log4net che volevo nel progetto che non è stato in grado di risolvere il conflitto e questo ha risolto il problema. –