天天看點

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

繼續閱讀