Comment puis-je obtenir les chemins de tous les assemblages référencés par l'assemblage en cours d'exécution? GetReferendedAssmies () Code> me donne le nom
nom de montage [] code> s. Comment puis-je aller où ils sont chargés de là? P>
4 Réponses :
La propriété codebase code> doit fournir le nom complet du chemin. p>
Malheureusement, CodeBase renvoie NULL sur chaque assemblage référencé. :-)
Vous pouvez obtenir l'emplacement de l'URL de l'assemblage comme celui-ci:
Assembly.GetExecutingAssembly().GetReferencedAssemblies()[0].CodeBase
CodeBase retourne null. La solution est dans le message que Jasonevans lié à son commentaire au poste d'origine. En outre, Hans Passant a la bonne réponse aussi.
Vous ne pouvez pas savoir que l'assemblage ne soit chargé. L'algorithme de résolution de montage est compliqué et vous ne pouvez pas deviner de manière fiable à l'avant de ce qu'il fera. Appeler le Cependant, vous vraiment em> ne voulez pas charger les assemblages à l'avance, avant em> le compilateur JIT le fait. Il est inefficace et la probabilité de problèmes n'est pas nulle. Vous pouvez par exemple tirer un Assembly.load (AssemblyName) Code> Le remplacement vous fera référence à l'Assemblée, et sa propriété de localisation vous indique ce dont vous avez besoin. P>
AppDomain.assemblblyResolve code> avant que le programme ne soit prêt à y répondre. Évitez de poser cette question. P>
Après la réponse de Hans Passant, et depuis la propriété utilisation: p> codebase code> toujours contenue
null code>, je suis arrivé avec ceci. Cela pourrait ne pas trouver tous les assemblages car ils ne seraient peut-être pas tous déjà chargés. Dans ma situation, je devais retrouver toute référence d'un assemblage auparavant chargé, de sorte qu'il a bien fonctionné:
Il serait bon d'éviter de renvoyer des valeurs nulles lorsque l'assemblage n'est pas chargé (continuez plutôt la boucle).
Bonne idée @slobodansavkovic, j'ai mis à jour ma réponse.
Essayez ceci Stackoverflow.com/questions / 1582510 / ...
Merci beaucoup. Cela résolu pour moi.
Pour un exemple de fonctionnement complet de la manière d'obtenir tous les assemblages référencés, de récursivement, voir Stackoverflow.com/questions/383686/... .