我正在开发 Visual Studio 2010 的扩展,并试图弄清楚如何在解决方案资源管理器 ( 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;
}
显然,这还没有做任何事情,因为我完全被卡住了。我怀疑代码将不得不变得递归(以处理文件夹中包含的项目等),但现在,我只关心所有项目都直接包含在解决方案下方的简单情况。
有没有人知道比微软(恕我直言不足)文档更好的参考资料?有没有人尝试过这样做?我该怎么做呢?
谢谢!