Я работаю над расширением для 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 (ИМХО)?Кто-нибудь пытался сделать это раньше?Как мне это сделать?
Спасибо!