天天看点

VS2008 AddIn 操作DTE2

 在vs2008扩展开发中,最重要的就是dte对象。dte对象提供了对扩展性模型中其他对象的访问。dte是vs自动化模型中的顶级对象。

以下方法可以在exec方法中引用:

如何使用dte2打开一个解决方案:

VS2008 AddIn 操作DTE2
VS2008 AddIn 操作DTE2

private void opensolution(string solutionfullname, dte2 _applicationobject)

{

try

((dte2)_applicationobject).solution.open(solutionfullname);

}

catch (exception ex)

throw;

VS2008 AddIn 操作DTE2

取得当前解决方案中的所有方法:

(其中包含了对project的操作、对filecodemodel的操作,对codeelement的操作)

VS2008 AddIn 操作DTE2
VS2008 AddIn 操作DTE2

private codefunction2[] getallfunctionincurrentcode(dte2 _applicationobject)

list<codefunction2> codefuncs = new list<codefunction2>();

int projectcount = _applicationobject.solution.projects.count;

for (int i = 0; i < projectcount; i++)

project project = _applicationobject.solution.projects.item(i + 1);

foreach (projectitem vsproject in project.projectitems)

if (vsproject.name.contains(".cs"))

filecodemodel2 cm = (filecodemodel2)vsproject.filecodemodel;

foreach (codeelement2 codeelement in cm.codeelements)

if (codeelement.kind == vscmelement.vscmelementnamespace)

codeelement2 eletemp = codeelement;

queue<codeelement2> childelements = new queue<codeelement2>();

childelements.enqueue(eletemp);

while (childelements.count != 0)

codeelement2 topele = childelements.dequeue();

if (topele.kind == vscmelement.vscmelementfunction)

codefuncs.add((codefunction2)topele);

if (topele.children != null)

foreach (codeelement2 childrenitem in topele.children)

childelements.enqueue(childrenitem);

return codefuncs.toarray();

VS2008 AddIn 操作DTE2

继续阅读