In quale ordine vengono cercate le posizioni per caricare le DLL di riferimento?

StackOverflow https://stackoverflow.com/questions/49972

  •  09-06-2019
  •  | 
  •  

Domanda

So che il framework .NET cerca DLL di riferimento in diverse posizioni

  • Cache di assembly globale (GAC)
  • Eventuali percorsi privati ​​aggiunti ad AppDomain
  • La directory corrente dell'assembly in esecuzione

In che ordine vengono cercate queste posizioni?La ricerca di una DLL viene interrotta se viene trovata una corrispondenza o continua in tutte le posizioni (e, in caso affermativo, come vengono risolti i conflitti)?

Inoltre, conferma o nega tali posizioni e fornisci eventuali altre posizioni che non ho menzionato.

È stato utile?

Soluzione

Il caricamento dell'assembly è un processo piuttosto elaborato che dipende da molti fattori diversi come file di configurazione, policy dell'editore, impostazioni del dominio app, host CLR, nomi di assembly parziali o completi, ecc.

La versione semplice è che prima viene il GAC, poi i percorsi privati.%PATH% non viene mai utilizzato.

È meglio usare Visualizzatore registro di associazione assembly (Fuslogvw.exe) per eseguire il debug di eventuali problemi di caricamento dell'assembly.

MODIFICARE http://msdn.microsoft.com/en-us/library/aa720133.aspx spiega il processo in modo più dettagliato.

Altri suggerimenti

ho trovato un articolo facendo riferimento all'articolo MSDN su Ordine di ricerca DLL che dice

Per le dipendenze del codice gestito, prevale sempre la cache dell'assemblaggio globale;L'assemblaggio locale nella directory delle applicazioni non verrà raccolto se nella GAC ​​è presente una copia esistente (o più recente con politica).

Considerando questo, immagino che l'elenco MSDN sia corretto con un'aggiunta

0. Global assembly cache

"Non viene più cercata per prima la directory corrente quando si caricano le DLL!Questa modifica è stata apportata anche in Windows XP SP1.Il comportamento predefinito ora è cercare prima in tutte le posizioni del sistema, poi nella directory corrente e infine in eventuali percorsi definiti dall'utente."

(rif. http://weblogs.asp.net/pwilson/archive/2003/06/24/9214.aspx)

L'ordine di ricerca predefinito, che può essere modificato dall'applicazione, è descritto anche su MSDN: http://msdn.microsoft.com/en-us/library/ms682586.aspx

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top