在vs2008擴充開發中,最重要的就是dte對象。dte對象提供了對擴充性模型中其他對象的通路。dte是vs自動化模型中的頂級對象。
以下方法可以在exec方法中引用:
如何使用dte2打開一個解決方案:
private void opensolution(string solutionfullname, dte2 _applicationobject)
{
try
((dte2)_applicationobject).solution.open(solutionfullname);
}
catch (exception ex)
throw;
取得目前解決方案中的所有方法:
(其中包含了對project的操作、對filecodemodel的操作,對codeelement的操作)
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();