besoin essentiellement de lire les dépendances sans charger l'programmation assemblée elle-même, comme vous ne pouvez pas les déchargercomment lire l'assemblage manifeste sans charger le fichier .dll
Répondre
2 solutions me viennent à l'esprit, même si je pense qu'il est beaucoup plus facile (que j'ai oublié ou don 't know :)):
1. Chargez vos assemblys à l'aide de AppDomain
supplémentaires que vous pouvez créer. Le déchargement entier AddDomain
déchargera également les assemblys chargés (mais seulement ceux qui ont été chargés en utilisant ce AppDomain
).
2. Utilisez une API, par exemple CCI qui vous permet de regarder à l'intérieur d'une DLL gérée sans la charger à l'aide d'un mécanisme de réflexion.
Kumar,
Vous pouvez décharger .Net DLL, mais vous devez utiliser l'objet AppDomain pour les charger en premier lieu, puis de nouveau pour décharger.
Jetez un oeil: http://msdn.microsoft.com/en-us/library/system.appdomain(VS.80).aspx
Si vous voulez toujours éviter ce type de processus, je suppose que vous pouvez analyser le DLL vous-même, mais ce serait beaucoup plus de travail que d'utiliser le AppDomain je pense.
-p
Le problème résout les dépendances de la dll dans le nouveau bac à sable AppDomain en quelque sorte, sandBox.AssemblyResolve + = new ResolveEventHandler (Reh génère une erreur indiquant que l'assemblage actuel n'est pas trouvé? des indices? – Kumar
espère que vous attendez Ildasm.exe (désassembleur de langue intermédiaire)
http://msdn.microsoft.com/en-us/library/aa309387(VS.71).aspx
désolé n'a pas le préciser plus tôt .... à la recherche d'accès par programmation – Kumar
Je suis sûr que quelqu'un va me corriger si je me trompe, mais n'est pas le manifeste juste une autre ressource dans la DLL? Si oui, vous pouvez le lire comme n'importe quelle autre ressource.
Voici un outil open source qui vous permet d'explorer une DLL de ressources:
http://www.wilsonc.demon.co.uk/d10resourceeditor.htm
Et bien sûr, je peux voir avec elle se manifeste embarqués. Donc, chargez la DLL en utilisant LoadLibrary() et allez chercher les ressources.
LoadLibrary() n'a pas fonctionné avec les DLL gérés de ce que j'ai l'air d'avoir lu plus tôt – Kumar
Que voulez-vous dire par "ne fonctionne pas"? –
trouvé cet System.Reflection.Assembly.ReflectionOnlyLoadFrom (chemin) le tour est joué
thx, se penchera sur cci, la 1ère option ne fonctionne pas en raison de dépendances – Kumar
regardant et aller nulle part ... le seul échantillon que j'ai trouvé est http://www.codeproject.com/KB/recipes/Not_Used_Analysis.aspx mais il est vieux et ne compile pas – Kumar
Je l'ai fait fonctionner avec Cecil mais je voudrais utiliser CCI car il est utilisé en interne par MS et est susceptible d'être plus courant – Kumar