Есть ли способ скрыть проект в Solution Explorer программно? - PullRequest
0 голосов
/ 30 марта 2012

Я работаю над расширением для 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;
}

Очевидно, это еще ничего не делает, потому что я полностью застрял.Я подозреваю, что код должен стать рекурсивным (для обработки проектов, содержащихся в папках и т. Д.), Но сейчас меня беспокоит только тот простой случай, когда все проекты содержатся непосредственно под решением.

Кто-нибудь знает какой-либо лучший справочный материал, чем документация Microsoft (ИМХО)?Кто-нибудь пытался сделать это раньше?Как мне это сделать?

Спасибо!

1 Ответ

1 голос
/ 31 марта 2012

Я не уверен, что это возможно для узлов проекта. Что касается файловых узлов, существует свойство иерархии VSHPROPID_IsNonMemberItem. Посмотрите на эту ветку и на эту .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...