Иерархии в Visual Studio
Интегрированная среда разработки Visual Studio отображает проект в виде иерархии. В интегрированной среде разработки иерархия — это дерево узлов, где каждый узел имеет набор связанных свойств. Иерархия проектов — это контейнер, содержащий элементы проекта, связи элементов и связанные с ними свойства и команды элементов.
В Visual Studio вы управляете иерархиями проектов с помощью интерфейса IVsHierarchyиерархии. Интерфейс IVsUIHierarchy перенаправляет команды, вызываемые из элементов проекта, в соответствующее окно иерархии вместо стандартного обработчика команд.
Иерархии проектов
Каждая иерархия проектов содержит элементы, которые можно просматривать и изменять. Эти элементы зависят от типа проекта. Например, проект базы данных может содержать хранимые процедуры, представления базы данных и таблицы базы данных. С другой стороны, проект языка программирования, скорее всего, будет включать исходные файлы и файлы ресурсов для растровых изображений и диалоговых окон. Иерархии могут быть вложены, что обеспечивает дополнительную гибкость при создании иерархии проектов.
При создании нового типа проекта тип проекта управляет полным набором элементов, которые можно изменить в нем. Однако проекты могут содержать элементы, для которых они не поддерживают редактирование. Например, проекты Visual C++ могут содержать HTML-файлы, даже если Visual C++ не предоставляет настраиваемый редактор для типа HTML-файла.
Иерархии управляют сохраняемостью содержащихся в них элементов. Реализация иерархии должна управлять любыми специальными свойствами, влияющими на сохраняемость элементов в иерархии. Например, если элементы представляют объекты в репозитории вместо файлов, реализация иерархии должна контролировать сохраняемость этих объектов. Интегрированная среда разработки направляет иерархию для сохранения элементов в соответствии с пользовательскими входными данными, но интегрированная среда разработки не контролирует какие-либо действия, необходимые для сохранения этих элементов. Вместо этого проект управляется.
Когда пользователь открывает элемент в редакторе, иерархия, которая управляет выбранным элементом и становится активной иерархией. Выбранная иерархия определяет набор команд, доступных для действия над элементом. Отслеживание фокуса пользователя таким образом позволяет иерархии отражать текущий контекст пользователя.