52 votes

Dans quel ordre les emplacements sont-ils recherchés pour charger les DLL référencées?

Je sais que le .NET framework recherche Dll référencées dans plusieurs endroits

  • Global assembly cache (GAC)
  • Privées de chemins ajouté à l'AppDomain
  • Le répertoire courant de l'assembly en cours d'exécution

Quel ordre sont ces endroits recherchés? Est la recherche d'une DLL cessé si une correspondance est trouvée, ou faut-il continuer à travers tous les sites (et si oui, comment résoudre les conflits)?

Aussi, merci de confirmer ou d'infirmer ces emplacements et de fournir tous les autres endroits que j'ai omis de le mentionner.

54voto

Lars Truijens Points 24005

Chargement de l'assemblage est plutôt un processus complexe qui dépend de beaucoup de facteurs différents comme les fichiers de configuration, éditeur politiques, domaine d'application paramètres, les hôtes CLR, partielle ou complète de l'assemblée des noms, etc.

La version simple est que le GAC est d'abord, puis de la des sentiers privés. %PATH% n'est jamais utilisé.

Il est préférable d'utiliser de l'Assemblée de Liaison de la Visionneuse de Journaux (Fuslogvw.exe) pour déboguer toute assemblée des problèmes de chargement.

MODIFIER http://msdn.microsoft.com/en-us/library/aa720133.aspx explique le processus plus en détail.

6voto

Anthony Mastrean Points 8582

J'ai trouvé un article du référencement de l'article MSDN sur DLL ordre de recherche qui dit

Pour le code managé dépendances, le Global Assembly Cache toujours l'emporte; l'assemblée locale en application répertoire ne seront pas ramassés si il existe déjà un (ou plus récent avec politique) copier dans le GAC.

Considérant cela, je suppose que la MSDN liste est correcte avec un ajout

0. Global assembly cache

2voto

Anders Sandvig Points 7964

"Il n'est plus le répertoire courant cherché d'abord lors du chargement de la Dll de! Ce changement a également été introduit dans Windows XP SP1. Le comportement par défaut est maintenant à regarder dans tous les emplacements du système en premier, puis le répertoire courant, et enfin tout défini par l'utilisateur des chemins."

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

La valeur par défaut recheche de commande, qui peut être modifié par l'application, est également décrite sur le site MSDN: http://msdn.microsoft.com/en-us/library/ms682586.aspx

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X