.net dependency viewer : arbre des dépendances d'un assembly et liste des pinvokes

Soyez le premier à donner votre avis sur cette source.

Vue 13 269 fois - Téléchargée 368 fois

Description

Ce code permet à la manière de Dependency Viewer, de voir l'arbre des dépendances d'une assembly .Net. Il permet aussi d'avoir la liste des modules non managés et PInvoke utilisés par une assembly ainsi que d'autres informations.

Ce code utilise les interfaces COM d'accès au CLR .Net (point d'entrée IMetaDataDispenserEx) pour lire les métatables de l'entête d'une assembly et en extraire certaines informations comme les PInvokes. Elle utilise aussi la classe System.Reflection.Assembly pour obtenir "plus simplement" les AssemblyName des références d'une assembly.

Ce code s'inspire de l'exemple disponible à http://pzsolt.blogspot.com/2005/01/reading-types-from-assembly.html

Conclusion :


N'hésitez pas à commenter et à noter !

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1
Date d'inscription
mardi 26 août 2008
Statut
Membre
Dernière intervention
26 août 2008

Beau travail.
Messages postés
956
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
21 août 2014
1
très bien réalisé,
domage qu'il y ait quelques plantages :
null reference sur : n.Text = refNode.Assembly.GetName().Name; (frmMain:ligne 45)
idem sur : this.mAssembly = Assembly.ReflectionOnlyLoad(asmName.FullName); (AssemblyReferenceTree:ligne 87)

et il faut ajouter ça
if (outModuleNameSize>0)
this.mModules.Add(new string(szModuleName, 0, (int)outModuleNameSize - 1)); (CorAssembly:ligne 318)
Messages postés
9
Date d'inscription
jeudi 13 mai 2004
Statut
Membre
Dernière intervention
16 février 2009

Malheureusement impossible à utiliser dans mon cas.
Je prends une System.ArgumentOutOfRangeException dans la méthode FillModules de la classe CorAssembly au chargement de mon Assembly (c'est un bibliothèque de classes qui publie une interface COM).

J'espère pouvoir tester une version corrigée ultérieurement...

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.