Exploration du Global Assembly Cache facile

March 23, 2012

Le Global Assembly Cache est un conteneur à assembly .Net global à la machine. Il permet notamment de faire coexister plusieurs versions d’une même assembly sur l’ordinateur. Consultez la page MSDN Global Assembly Cache pour plus d’information.

Si vous essayez d’accéder au GAC par l’explorateur Windows (c:\windows\assembly), vous ne verrez pas la structure physique du GAC, mais son contenu. Un composant COM shfusion.dll se chargeant en effet de présenter ces dll de manière simple et logique.

Il arrive toutefois d’avoir parfois besoin de parcourir le GAC. Le plus souvent, il s’agit de créér une référence dans Visual Studio d’un DLL du GAC, ce que Visual Studio ne propose pas par défaut.

Deux solutions s’offrent à vous :

Cette deuxième possibilité consiste à faire pointer un autre dossier vers le dossier du GAC.

Bien que le système de fichier NTFS permette ces points de jonction, il n’existe pas d’outil natif permettant de créer de tel points de jonction. Il existe heureusement un myriade d’outils le permettant. Notamment Sysinternal. Exemple :

    junction.exe c:\GAC %windir%\assembly

Ceci devant bien entendu être exécuté en privilèges élevés (Run as administrator)

Remarque : depuis la version 4 du framework, le Gac a été déplacé dans le dossier %windir%\Microsoft.Net\assembly. Dans ce dossier il n’y a bizarrement plus le composant ShFusion pour afficher le contenu.