1

Comment puis-je accéder aux types de projets (classes) actuellement ouverts à partir d'un complément Visual Studio (être capable de créer des instances de ces classes dans le complément)? Est-ce possible par réflexion? Ou peut-être inclure dynamiquement l'assemblage du projet comme référence? Ce que je voudrais avoir à la fin est une liste de tous les types accessibles à partir du projet, en tenant compte des assemblages référencés et des types déclarés dans le projet lui-même. En l'absence d'une méthode pour trouver réellement des instances de type, une liste de noms de types peut faire - de cette façon, je ne rencontrerai pas de problèmes si le projet n'est pas encore construit et que les types ne sont pas encore implémentés. J'utilise Visual Studio 2008 et la langue que je préfère est C#. Editer: J'imagine que je pourrais analyser chaque fichier et chercher des déclarations de classe, mais je voudrais aussi considérer les types des assemblages référencés. Les références peuvent être recherchées en recherchant des instructions "using", mais cela laisse des types de DLL importés dynamiquement un problème ouvert. Ainsi, compte tenu de l'embranchement des situations distinctes à considérer, je me demande s'il n'y a pas un moyen plus facile.Comment puis-je accéder aux types (classes) de projet actuellement ouverts à partir d'un complément Visual Studio?

+0

Cela ne semble pas bon. Un projet est une collection de fichiers de code source. Il n'y a pas d'implémentation concrète d'un type jusqu'à ce que le projet soit compilé sans erreurs. –

+0

Je suppose que j'ai déjà un ensemble compilé et existant généré à partir du projet. Pour ne pas s'en prévaloir avant qu'il n'existe réellement, pourrait-il y avoir un moyen de chercher si c'est le cas? – luvieere

Répondre

1

Bien sûr, récupérez simplement l'assemblage du répertoire de sortie et chargez-le. Je ne travaille pas sur des projets EnvDTE en ce moment, donc je ne peux pas simplement entrer et supprimer un échantillon, mais c'est comme ça que vous pourriez énumérer/instancier des classes.

Mais .... nobugz laisse entendre que quelque chose sent ... Qu'est-ce que vous essayez de faire? Il peut y avoir un «meilleur» moyen de le faire.