Abbiamo avuto un problema molto interessante con un progetto Win Forms. È stato risolto Sappiamo cosa è successo, ma vogliamo capire perché è successo. Ciò potrebbe aiutare altre persone in futuro a risolvere un problema simile.Riferimento .NET "Copia locale" Vero/Falso impostato in base al contenuto di GAC
Il progetto WinForms non è riuscito su 2 PC dei nostri clienti. L'errore era un errore kernel.dll oscuro. Il progetto è andato bene su altri 3 PC.
Abbiamo trovato che una DLL (log4net.dll - una libreria di registrazione open source molto popolare) mancava dalla nostra cartella di rilascio. Era precedentemente nella nostra cartella di rilascio. Perché mancava in questa ultima versione?
Mancava perché è stato installato un programma nella mia casella Dev che utilizzava log4net.dll ed è stato aggiunto alla Global Assembly Cache.
Quando ho controllato i riferimenti della soluzione per log4net.dll, sono stati modificati in "copia local = FALSE". Devono essere cambiati automaticamente perché log4net.dll era presente nel mio GAC.
Ecco dove inizia la mia domanda:
Perché il mio riferimento per log4net.dll ottenere cambiato dalla copia locale = TRUE per copia locale = FALSE? Sospetto che sia stato aggiunto al mio GAC da un altro programma.
Come possiamo evitare che ciò accada di nuovo? Allo stato attuale, se installo un software che utilizza una libreria comune e lo aggiunge al mio GAC, i miei SLN che fanno riferimento a tale DLL cambieranno da Copia locale TRUE a FALSE.
Qual è l'Assemblea Generale? http://en.wikipedia.org/wiki/Global_Assembly_Cache? –