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

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

  •  09-06-2019
  •  | 
  •  

Question

Je sais que le framework .NET recherche les DLL référencées à plusieurs emplacements

  • Cache d'assemblage global (GAC)
  • Tous les chemins privés ajoutés à AppDomain
  • Le répertoire actuel de l'assembly en cours d'exécution

Dans quel ordre ces emplacements sont-ils recherchés ?La recherche d'une DLL s'arrête-t-elle si une correspondance est trouvée ou se poursuit-elle dans tous les emplacements (et si oui, comment les conflits sont-ils résolus) ?

Veuillez également confirmer ou infirmer ces emplacements et indiquer tout autre emplacement que j'ai omis de mentionner.

Était-ce utile?

La solution

Le chargement de l'assembly est un processus plutôt élaboré qui dépend de nombreux facteurs différents tels que les fichiers de configuration, les politiques de l'éditeur, les paramètres du domaine d'application, les hôtes CLR, les noms d'assembly partiels ou complets, etc.

La version simple est que le GAC est en premier, puis les chemins privés.%PATH% n'est jamais utilisé.

Il est préférable d'utiliser Visionneuse de journaux de liaison d’assemblage (Fuslogvw.exe) pour déboguer tout problème de chargement d’assembly.

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

Autres conseils

j'ai trouvé un article faisant référence à l'article MSDN sur Ordre de recherche des DLL ça dit

Pour les dépendances de code gérées, le cache d'assemblage global prévaut toujours;L'assemblage local dans le répertoire des applications ne sera pas récupéré s'il existe une copie existante (ou plus récente avec politique) dans le GAC.

Compte tenu de cela, je suppose que la liste MSDN est correcte avec un ajout

0. Global assembly cache

"Le répertoire actuel n'est plus recherché en premier lors du chargement des DLL !Cette modification a également été effectuée dans Windows XP SP1.Le comportement par défaut consiste désormais à rechercher d'abord tous les emplacements du système, puis le répertoire actuel et enfin tous les chemins définis par l'utilisateur.

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

L'ordre de recherche par défaut, qui peut être modifié par l'application, est également décrit sur MSDN : http://msdn.microsoft.com/en-us/library/ms682586.aspx

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top