有没有一种方法可以用程序在解决方案资源管理器中隐藏项目

本文关键字:解决方案 程序 资源管理器 项目 隐藏 一种 方法 有没有 | 更新日期: 2023-09-27 18:29:27

我正在为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;
}

显然,这还没有任何作用,因为我完全被卡住了。我怀疑代码必须是递归的(以处理文件夹中包含的项目等),但目前,我只关心所有项目都直接包含在解决方案下面的简单情况。

有人知道比微软(IMHO缺陷)文档更好的参考资料吗?以前有人试过这样做吗?我该怎么做?

谢谢!

有没有一种方法可以用程序在解决方案资源管理器中隐藏项目

我不确定这是否适用于项目节点对于文件节点,存在VSHPROPID_IsNonMemberItem层次结构属性。看看这根线,还有这根。

相关文章: