i have created visual studio extension project. works nice , neat. made event solutions.
the manuals in msdn , internet brief. , cannot find answer question: how can retrieve metadata related class , interfaces (namespaces, class names, base types, etc.) in solution extension package installed?
you can use itypediscoveryservice
list available types in project.
to this, should add microsoft.visualstudio.shell.design
reference project. way can use dynamictypeservice
instance of itypediscoveryservice
.
add methods package
class:
public list<type> getalltypes() { var trs = gettypediscoveryservice(); var types = trs.gettypes(typeof(object), true /*excludeglobaltypes*/); var result = new list<type>(); foreach (type type in types) { if (type.ispublic) { if (!result.contains(type)) result.add(type); } } return result; } private itypediscoveryservice gettypediscoveryservice() { var dte = getservice<envdte.dte>(); var typeservice = getservice<dynamictypeservice>(); var solution = getservice<ivssolution>(); ivshierarchy hier; var projects = dte.activesolutionprojects array; var currentproject = projects.getvalue(0) project; solution.getprojectofuniquename(currentproject.uniquename, out hier); return typeservice.gettypediscoveryservice(hier); } private t getservice<t>() { return (t)getservice(typeof(t)); }
then can use getalltypes
types of active project:
list<type> types= getalltypes();
Comments
Post a Comment