Bonjour tout le monde… Je tarvaille en ce moment sur un moteur de prévalence pour .Net 2, et j’ai un problème qui se pose à moi…
Comment lister les assemblies contenu dans la Gac d’une machine? A priori, j’aurais pensé trouver ca dans System.Reflection, mais nada… je sèche…
Alors, est-ce que quelqu’un pourrait me renseigner? hein Glop…
1° Par l’API
http://support.microsoft.com/default.aspx?..kb;en-us;317540
Good luck
D’après ce qui est dit seule cette API permet d’accéder à la liste des librairies dans le GAC, sachant qu’il est relativement dangereux d’aller taper la dedans sans trop savoir ce que l’on fait (m’enfin pour énumérer les libraries ça devrai passer :P)
Qq exemples de code : http://blogs.msdn.com/junfeng/archive/2004/09/14/229653.aspx
3° A l’aide de gacutil
« gacutil -l » te renvoie la liste des librairies installées, il ne te reste plus qu’à le parourir
2° Par exploration du répertoire
Il reste toujours la méthode d’aller te balader dans %WINDIR%\assembly\gac à la main et de regarder ce que tu y trouves, c’est sale.
La plus grande question c’est “pourquoi tu as besoin de faire ca”?
Si c’est pour resoudre un type a partir de son nom, ou des trucs du genre, y a plus simple…
Héhé, non non ce n’est pas pour la charger dynamiquement… en fait j’ai créé un petit outil graphique qui permet de créer un fichier de conf pour mon serveur de prevalence. Le type de la racine du graphe à gérer pour une instance donnée du PrevalenceEngine doit obligatoirement se trouver dans une assembly de la Gac (j’oblige le client du prevalence engine à installer l’assembly contenant ce type dans le Gac du serveur avant de pouvoir lancer l’engine sur le serveur).
Donc pour mon petit outil, j’ai besoin de lister les assemblies du Gac pour pouvoir faire une sorte d’arbre pour que l’utilisateur puisse choisir en 2 clics le type du graphe d’une instance donnée…
Je sais ce n’est pas très compréhensible, mais ce n’est pas simple non plus à expliquer… surtout après une rude journée de codage avec utilisation intensive de la généricité, de la reflection et du remoting…