我工作的一個擴展的Visual Studio 2010,和我試圖找出如何隱藏在Solution Explorer(該UIHierarchy
)的一個項目,沒有從底層溶液中移出。我一直在尋找,並發現了一些線索,但我只是不知道把它放在一起。有沒有辦法以編程方式在解決方案資源管理器中隱藏項目?
從我已經能夠收集,Visual Studio甚至不創建UIHierarchy
實例,除非該項目是可見的(即樹已擴展到它),所以我想如果我想要一個項目走開,我應該能夠簡單地從樹中移除實例。
我的第一個問題是,是我的假設是正確的?
假設答案是肯定的,那麼我有以下代碼(簡化爲這個職位):
private void HideProject(IVsHierarchy project)
{
((IVsUIHierarchyWindow2)_uiHierarchyWindow).RemoveUIHierarchy(GetUIHierarchyFromHierarchy(project));
}
private IVsUIHierarchy GetUIHierarchyFromHierarchy(IVsHierarchy project)
{
UIHierarchy solutionExplorer = ((DTE2)_dte).ToolWindows.SolutionExplorer;
foreach (UIHierarchyItem hierarchy in solutionExplorer.UIHierarchyItems.Item(1).UIHierarchyItems)
{
// What do I do here?
}
return null;
}
顯然,這並不做任何事情,因爲我完全被卡住。我懷疑代碼將不得不遞歸(處理包含在文件夾中的項目等),但現在,我只關心所有項目都直接包含在解決方案下的簡單情況。
有誰知道比微軟的(恕我直言缺乏)文檔的任何更好的參考材料?有沒有人試過這樣做?我該怎麼做呢?
謝謝!
爲更好的文檔 - 我猜你會發現在MSDN論壇VSX一些有益的信息。你也可以尋找基於開源MPF的軟件包(有一些產品可用),並瞭解他們是如何做到的; – 2012-03-31 11:12:10