Assembly.Load : intéractions entre le Loader du CLR et Fusion
Je viens de voir un post intéressant de Junfeng Zhang sur le déroulement du chargement d'un assembly : The sequence of interactions between CLR loader and fusion during Assembly.Load
Au point 4, Junfeng Zhang parle de la recherche d'assembly comme décrite sur MSDN : sauf erreur de ma part, nous parlons ici de la section suivante de la documentation : Méthode de localisation des assemblys par le runtime (How the Runtime Locates Assemblies)
Au passage, j'avais complètement zappée l'existence d'une demande de l'assembly à Windows Installer dans ce processus.
A noter que cette section ne mentionne pas DEVPATH, utilisable en environnement de développement, et qui se placerait donc juste avant la recherche dans le GAC. Par contre du coup je me demande s'il se positionne aussi avant la recherche des assemblys précédemment référencés, et donc si un échec de chargement d'un assembly depuis DEVPATH est mis en cache... à vérifier.
A noter aussi qu'à l'heure actuelle en .NET 2.0, la variable d'environnement DEVPATH ne permet pas d'utiliser plusieurs répertoires : ce problème est connu, un hotfix existe et sera probablement inclus dans le SP1 de .NET 2.0.
Comme c'est le type d'information qu'on ne retrouve pas quand on en a besoin, j'en profite pour faire de ce post un pense-bête.
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :