Просмотр и реорганизация графов зависимостей

Можно изменить расположение элементов на графах зависимостей, чтобы сделать их более простыми для чтения и повысить производительность отрисовки.

Требования

Содержание раздела

  • Управление большими графами

  • Изменение макета графа

  • Обзор графа

  • Просмотр узлов и связей

  • Сокрытие или отображение узлов и связей

  • Группирование узлов

Для дополнительных способов просмотра графа с помощью мыши или клавиатуры на пустом графе нажмите ссылку на справку.

Управление большими графами

При первом создании графа зависимостей, Visual Studio создаст индекс кода для всех зависимостей, которые будут найдены.Хотя этот процесс может занять некоторое время, особенно для больших решений или графов с большим числом связей, этот индекс повышает производительность последующих операций.Если код в последствии изменяется, то Visual Studio переиндексирует только обновленный код.

Если ожидать завершение создания графа нежелательно, то можно отменить процесс его создания в любое время и попробовать следующие рекомендации:

После создания графа попробуйте выполнить следующие рекомендации:

  • На панели инструментов графа выберите Быстрые кластерыКнопка "Быстрые кластеры" на панели инструментов диаграмм, чтобы можно было видеть естественные кластеры зависимостей в коде.См. раздел Изменение макета графа.

    Граф зависимостей — макет быстрых кластеров

  • Разбиение графов на меньшие области путем группировки связанных узлов.Эти группы можно свернуть для просмотра только межгрупповых зависимостей, которые появляются автоматически.См. раздел Группирование узлов.

  • Ручное редактирование графа для удаление ненужных узлов и связей.Изменение графа не влияет на код.Дополнительные сведения см. в разделе Изменение и настройка графов зависимостей.

Изменение макета графа

Целевой тип

На панели инструментов графа или в контекстном меню графа

Расположение потока зависимостей всего графа в определенном направлении.Это помогает увидеть архитектурные уровни в коде.

Выберите одно из следующих действий, чтобы отобразить граф в виде дерева.

  • Слева направо Кнопка схемы слева направо

  • Справа налево Кнопка схемы справа налево

  • Сверху вниз Кнопка схемы "Сверху вниз"

  • Снизу вверх Кнопка схемы "Снизу вверх"

Просмотр естественных кластеров зависимостей в коде.

Выберите Быстрые кластерыКнопка "Быстрые кластеры" на панели инструментов диаграмм, чтобы увидеть наиболее зависимые узлы в центре этих кластеров, а наименее зависимые узлы — возле внешней части этих кластеров.

Граф зависимостей — макет быстрых кластеров

Чтобы переместить определенные узлы графа, перетащите их.Чтобы убрать с пути другие узлы и связи по мере перетаскивания узлов, нажмите и удерживайте клавишу SHIFT во время перетаскивания узлов.Чтобы изменить структуру внутри группы независимо от графа, выбрав одну из древовидных структур, используйте Быстрые кластеры или Представление списка, которые упорядочивают содержимое группы в список.См. раздел Группирование узлов.

ПримечаниеПримечание

В данном выпуске не поддерживается следующая функциональность: Режим просмотра окружения, Двухстворчатый режим, Дополнительное выделение и Матричный вид зависимостей.

Обзор графа

Целевой тип

Выполните следующие действия

Просмотрите граф

Перетащите граф в любом направлении.

Увеличение или уменьшение графа

Вращайте колесико мыши.

- или -

Выберите символ плюс (+) или минус (-) на панели инструментов графа.

- или -

Для увеличения определенной области, воспользуйтесь правой кнопкой мыши, чтобы обвести область прямоугольником.

Измените размер графа под размер его окна

На панели инструментов графа выберите Масштабировать по данным.

- или -

Дважды щелкните на пустой области графа.

Измените размер и отцентрируйте граф по определенному узлу

Разверните узел.Дважды щелкните на пустой области узла.

Visual Studio изменяет размер графа таким образом, чтобы вся группа вмещалась в окно графа.

Если дважды щелкнуть на свернутое пространство имен, класс или его члены, то Visual Studio покажет определение кода.

Изменение фокуса независимо от выбранного узла

Нажмите клавишу TAB.

Вокруг узла, который в данный момент находится в фокусе, появляется пунктирная линия.

Поиска узла на графе по его имени.

СоветСовет
Чтобы найти элементы в решении, но не на графе, найдите их в Обозревателе решений, а затем перетащите их на граф.
Поле поиска графа зависимостей
  1. Нажмите клавишу CTRL+F.

    Окно поиска появляется в правом верхнем углу графа.

  2. Введите название элемента.Чтобы настроить поиск, выберите параметры поиска.

    Первый элемент, соответствующий поисковому запросу, будет отображен на графе.

  3. Чтобы просмотреть другие результаты, выберите Найти далее (нажмите клавишу F3).

    - или -

    Чтобы выбрать все совпадения, откройте раскрывающийся список.Выберите Выделить все.

Важное примечаниеВажно
Можно использовать поле поиска для нахождения совпадений в свернутых группах, только если эти группы были развернуты ранее.Чтобы найти эти совпадения и развернуть их родительские группы автоматически, выберите этот параметр под полем поиска.

Найти источник или цель ссылки

Метод используется при наличии большого количества ссылок, чтобы легко увидеть источник или цель конкретной ссылки.

  1. Смените структуру в виде графа на древовидную структуру или на структуру в виде быстрых кластеровКнопка "Быстрые кластеры" на панели инструментов диаграмм.

    См. раздел Изменение структуры графа.

  2. Наведите указатель мыши на связь или выберите связь.

    Visual Studio отображает две стрелки и подсказку, которая содержит источник и целевой объект связи и другие сведения о связи.

  3. Выберите стрелку, указывающую направление, которому необходимо следовать.

    В зависимости от выбранного направления отображается источник или цель.

Выбор всех невыбранных узлов

Откройте контекстное меню для выбранных узлов.Выберите Выделить, Обратить выделение.

Выберите дополнительные узлы, связанные с уже выбранными

Откройте контекстное меню для выбранных узлов.Выберите Выделить и одно из следующих действий:

  • Чтобы выделить дополнительные узлы, которые непосредственно связаны с выбранным узлом, выберите Входящие зависимости.

  • Выберите Исходящие зависимости, чтобы выделить дополнительные узлы, связанные с выбранным узлом.

  • Выберите Обе зависимости, чтобы выделить дополнительные узлы, связанные с выбранным узлом в обе стороны.

  • Выберите Подключенные подграфы, чтобы выделить все узлы, косвенно связанные с выбранным узлом.

  • Выберите Дочерние элементы, чтобы выделить все дочерние элементы выбранного узла.

Просмотр узлов и связей

Графы зависимостей показывают следующие типы связей:

  • Отдельная связь представляет единичное отношение между двумя узлами.

  • Связи между группами представляют собой отношения между узлами из различных групп.

  • Совокупная связь представляет все отношения, которые указывают в одном направлении между двумя группами.

СоветСовет

По умолчанию граф показывает связи между группами только для выбранных узлов.Чтобы эти связи отображались всегда, на панели инструментов графа откройте список Изменение способа отображения связей на графеКнопка "Изменение способа отображения ссылок на графе".Выберите Показать все связи между группами.

Это позволяет скрыть совокупные связи между группами.

Целевой тип

Выполните следующие действия

Дополнительные сведения см. в разделе об узле или связи

Переместите указатель мыши на узел или связь пока не появится подсказка.

Подсказка для совокупной связи перечисляет типы индивидуальных зависимостей, которые она представляет.

- или -

Открыть контекстное меню для узла или связи.Выберите Свойства.

Отобразить или скрыть содержимое группы

  • Чтобы развернуть группу, откройте контекстное меню для узла.Выберите Группа, Развернуть.

    - или -

    Переместите указатель мыши на узел до тех пор, пока не появится кнопка шеврона (^).Выберите кнопку шеврона (^), чтобы развернуть группу.

    Чтобы развернуть или свернуть выбранные группы, нажмите клавишу ПЛЮС (+) или МИНУС (-).

    Чтобы развернуть или свернуть все внутри выбранной группы, нажмите и удерживайте клавишу SHIFT одновременно с клавишей ПЛЮС (+) или МИНУС (-).

  • Для разворачивания всех групп, откройте контекстное меню графа.Выберите Группа, Развернуть все.

    ПримечаниеПримечание
    Эта команда недоступна, если разворачивание всех групп создает неиспользуемый граф или служит причиной проблем с памятью.Рекомендуется разворачивать граф только до необходимого уровня детализации.
  • Чтобы свернуть одну группу, откройте контекстное меню узла.Выберите Группа, Свернуть.

    - или -

    Переместите указатель мыши на группу до тех пор, пока не появится кнопка с изображением шеврона (^).Чтобы свернуть группу, выберите кнопку с изображением шеврона (^).

  • Для сворачивания всех групп, откройте контекстное меню графа.Выберите Группа, Свернуть все.

Просмотр определения кода для пространства имен, типа или члена

Откройте контекстное меню узла.Выберите Перейти, Перейти к определению.

-или-

Дважды щелкните узел.Для развернутых групп, дважды щелкните заголовок группы.

-или-

Выберите узел.Нажмите клавишу F12.

Например:

  • Для узла пространства имен открывается файл кода для первого алфавитного класса в пространстве имен, чтобы показать определение этого класса.

    ПримечаниеПримечание
    При выполнении этой задачи для пространства имен Visual Basic .NET файл кода для пространства имен не открывается.Эта проблема также возникает при выполнении данной задачи для группы выбранных узлов, в которую входит пространство имен Visual Basic .NET.Чтобы обойти данную проблему, вручную перейдите в файл кода для пространства имен или исключите узел для этого пространства имен из числа выбранных узлов.
  • Для класса или разделяемого класса открывается файл кода для класса, чтобы показать определение этого класса.

  • Для метода открывается файл кода для родительского класса, чтобы показать определение этого метода.

Найти источник или цель ссылки

Метод используется при наличии большого количества ссылок, чтобы легко увидеть источник или цель конкретной ссылки.

  1. На панели инструментов графа измените структуру графа на древовидную структуру слоя или структуру в виде быстрых кластеровКнопка "Быстрые кластеры" на панели инструментов диаграмм.

  2. Наведите указатель мыши на связь или выберите связь.

    Visual Studio отображает две стрелки и подсказку, которая содержит источник и целевой объект связи и другие сведения о связи.

  3. Выберите стрелку, указывающую направление, которому необходимо следовать.

    В зависимости от выбранного направления отображается источник или цель.

Просмотр зависимостей и элементов, участвующих в совокупной связи

Для одной связи:

  1. Выберите связь.

  2. Наведите указатель мыши на связь.Когда Visual Studio отобразит две стрелки со знаком "плюс" (+) между ними, выберите символ плюс (+).

    Чтобы создать новый граф, при выборе знака плюс (+) нажмите и удерживайте клавишу SHIFT.

    - или -

    Откройте контекстное меню для выделения.Выберите Показать, Добавляющие ссылки в текущем диаграмме или Добавляющие ссылки в новой диаграмме.

Для нескольких связей:

  1. Выберите связи.

  2. Откройте контекстное меню для выделения.Выберите Показать, Добавляющие ссылки в текущем диаграмме или Добавляющие ссылки в новой диаграмме.

Visual Studio разворачивает группы на обоих концах связи и отображает только те элементы и зависимости, которые участвуют в связи.

ПримечаниеПримечание
При просмотре зависимостей между элементами в разделяемых группах можно заметить следующее:
  • Связи с элементами, которые не участвуют в данной выборке, исчезают из графа, даже если эти связи до сих пор существуют.

  • Предположим, что просматривается связь с элементом разделяемой группы, а затем просматривается другая связь с этим же элементом.При втором просмотре заданная разделяемая группа отображает только элементы из первого просмотра.Связи и заданные элементы, которые не участвовали в первом просмотре, но участвовали во втором, не будут отображаться.

Чтобы просмотреть отсутствующие элементы группы, выберите Повторно получить дочерние элементыЗначок "Повторно извлечь дочерние элементы", что будет свидетельствовать о том, что не все члены группы отображены на графе.Можно также попробовать отменить свои действия (нажав на клавиатуре CTRL+Z) и просмотреть зависимости на новом графе.

Изучение зависимостей между многими узлами из различных групп

  1. Разверните группы, чтобы можно было просмотреть все их дочерние элементы.

  2. Выберите все нужные узлы, включая их дочерние элементы.

    Для выделения всех узлов в группе, нажмите и удерживайте левую кнопку мыши во время выделения группы прямоугольником.Чтобы выбрать все узлы в графе, нажмите CTRL+A.

    Граф показывает ссылки между группами для выбранных узлов.

    СоветСовет
    Чтобы межгрупповые связи отображались всегда, на панели инструментов графа откройте список Изменение способа отображения связей на графеКнопка "Изменение способа отображения ссылок на графе".Выберите Показать все связи между группами.

Просмотр элементов, на которые ссылается узел или связь

ПримечаниеПримечание
Это относится только когда для узла или связи в DGML-файле графа установлен атрибут Reference. Для добавления ссылок на элементы из узлов или связей см. раздел Изменение и настройка графов зависимостей.

Откройте контекстное меню узла.Выберите Перейти и элемент.

Сокрытие или отображение узлов и связей

Сокрытие узлов сохраняет их от участия в алгоритмах структуры.По умолчанию межгрупповые связи скрыты.Связи между группами являются отдельными связями, которые соединяют узлы между различными группами.Когда группы свернуты, граф группирует все связи между группами в единичные связи между группами.При разворачивании группы и выборе узлов внутри группы будут отображены связи между группами и показаны фактические зависимости в этой группе.

Предупреждающее замечаниеВнимание

Перед тем как совместно использовать граф, который был создан в Visual Studio Ultimate, с сотрудниками, использующими Visual Studio Premium или Visual Studio Professional, убедитесь в отсутствии каких-либо скрытых связанных узлов или межгрупповых связей, предназначенных для просмотра.В противном случае пользователи не смогут отобразить эти элементы.

Сокрытие и отображение узлов

Целевой тип

Выполните следующие действия

Скрыть выбранные узлы

  1. Выделите узлы, которые необходимо скрыть.

  2. Откройте контекстное меню для выбранных узлов или графа.Выберите Выбрать, Скрыть выделенные.

Скрыть невыбранные узлы

  1. Выделите узлы, которые будут оставаться видимыми.

  2. Откройте контекстное меню для выбранных узлов или графа.Выберите Выбрать, Скрыть невыделенные.

Показать скрытые узлы

  • Чтобы отобразить все скрытые узлы внутри группы, убедитесь, что группа уже развернута.Выберите Показать дочерние элементыЗначок "Показать дочерние элементы" в левом верхнем углу группы.

  • Чтобы отобразить все скрытые узлы, откройте контекстное меню графа.Выберите Выделить, Отобразить все.

Сокрытие узлов путем редактирования DGML-файла

  1. Откройте контекстное меню для области графа.Выберите Перейти, DGML.

    Visual Studio открывает DGML-файл графа.

  2. Чтобы скрыть узел, добавьте следующий атрибут в элемент <Node/>.

    Visibility="Hidden"

    Например:

    <Nodes>
       <Node Id="MyNode" Visibility="Hidden"/>
    </Nodes>

Отображение или скрытие ссылок

Целевой тип

На панели инструментов графа, откройте список Изменение способа отображения связей на графе или откройте контекстное меню графа. Выберите:

Одновременное отображение связей между группами

Показать все ссылки между группами

Это позволяет скрыть совокупные связи между группами.

Показать только связи между группами в выбранных узлах

Показать ссылки между группами в выбранных узлах

Одновременное сокрытие связей между группами

Скрыть все ссылки между группами

Скрытие всех ссылок (или отображение всех ссылок)

Скрыть все ссылки

Чтобы показать все связи, выберите Скрыть все связи повторно, что отключит этот режим.

Группирование узлов

Целевой тип

Выполните следующие действия

Показ узлов в виде узлов группы или конечных узлов

Чтобы отобразить узлы в качестве конечных узлов, сначала выберите узлы.Откройте контекстное меню для выделения.Выберите Группа, Преобразовать в листовой узел.

Чтобы отобразить узлы в качестве групповых узлов, сначала выберите узлы.Откройте контекстное меню для выделения.Выберите Группа, Преобразовать в группу.

Чтобы отобразить все листовые узлы как групповые узлы, откройте контекстное меню графа.Выберите Группа, Включить группировку.

Чтобы отобразить все групповые узлы как листовые узлы, откройте контекстное меню графа.Выберите Группа, Выключить группировку.

Изменение структуры внутри группы

  1. Выберите группу.

    Появится панель инструментов группы.

    Граф зависимостей — панель инструментов группы

  2. Открыть список Граф зависимостей — панель инструментов группы — макетИзменение стиля макета группы.Выберите требуемую структуру.

    Представление списка размещает элементы группы в списке.Граф по умолчанию сбросит структуру групп к структуре по умолчанию.Другие опции см. в разделе Изменение макета диаграммы.

Добавление узла в группу

Перетащите узел на группу.

При перетаскивании узла Visual Studio отображает индикатор, чтобы показать, что узел перемещается.

Можно также перетаскивать узлы из группы.

Добавление узла к узлу, не состоящему в группе

Любой узел можно преобразовать в группу.Перетащите узел на целевой узел.

Группирование выбранных узлов

  1. Выберите узлы, которые требуется сгруппировать.

    Над последним выбранным узлом появится панель инструментов.

    Панель инструментов графа зависимостей

  2. На панели инструментов выберите Группировка выбранных узловПанель инструментов графа — выбрана группа.

    - или -

    Откройте контекстное меню для выделения.Выберите Группа, Добавить родительскую группу.

  3. Откройте контекстное меню для новой группы.Выберите Свойства.В свойстве Метка переименуйте группу.

Группировка узлов определенных категорий или свойств

  1. Выберите узлы, которые имеют определенную категорию или свойство.

  2. Откройте контекстное меню для выделения.Выберите Группа, Добавить родительскую группу.

  3. Откройте контекстное меню для новой группы.Выберите Свойства.В свойстве Метка переименуйте группу.

Группирование узлов в соответствии с их контейнерами

  1. В меню Архитектура выберите Окна, Обозреватель архитектуры.

  2. Использование "Обозревателя архитектуры" для нахождения и выбора всех узлов, которые необходимо сгруппировать.

    Дополнительные сведения см. в разделе Поиск кода с помощью обозревателя архитектуры.

  3. Для отображения свернутого столбца действий с правой стороны от текущего столбца, выберите его.(На клавиатуре нажимайте клавишу Tab для перемещения фокуса до тех пор, пока свернутый столбец действий не будет развернут.)

    ПримечаниеПримечание
    При наведении указателя мыши на столбец действий этот столбец выделяется.
  4. В столбце действий выберите Содержится в.(Клавиатура. Нажмите клавишу TAB для перемещения фокуса, а затем использовать клавиши со стрелками, пока не выделен связь Содержится в ).

  5. Из следующего столбца перетяните группы контейнера в граф.

  6. Откройте контекстное меню для поверхности графа, выберите Группа, Включить группировку:

Группирование узлов в соответствии со значениями свойств

  1. Сохраните граф на диске как DGML-файл.

  2. В меню Архитектура выберите Окна, Обозреватель архитектуры.

  3. В Обозревателе архитектуры, в разделе Файловая система выберите команду Выбор файлов.

  4. В следующем столбце выберите сохраненный DGML-файл.

  5. Использование Обозревателя Архитектуры для нахождения и выбора всех узлов, которые необходимо сгруппировать.

    Дополнительные сведения см. в разделе Поиск кода с помощью обозревателя архитектуры.

  6. Для отображения свернутого столбца действий с правой стороны от текущего столбца, выберите его.(На клавиатуре нажимайте клавишу Tab для перемещения фокуса до тех пор, пока свернутый столбец действий не будет развернут.)

    ПримечаниеПримечание
    При наведении указателя мыши на столбец действий этот столбец выделяется.
  7. В столбце действий в пункте Группирование выберите Группировать по свойствам.(Клавиатура. Нажмите клавишу TAB для перемещения фокуса, а затем использовать клавиши со стрелками, пока не выделена команда Группировать по Свойствам ).

  8. В следующем столбце выберите свойства, которое необходимо использовать в виде групп.

    Отобразится следующий столбец с доступными значениями свойства.

  9. Из следующего столбца перетяните группы значений свойства в граф.

  10. Откройте контекстное меню для области графа.Выберите Группа, Включить группировку.

Удаление групп

Выберите группы, которые требуется удалить.Откройте контекстное меню для выделения.Выберите Группа, Удалить группу.

Перемещение узлов из родительских групп в прародительскую или вне группы, если прародительская группа не существует

Выберите узлы, которые требуется переместить.Откройте контекстное меню для выделения.Выберите Группа, Удаление из родительского элемента.

Группировать узлы также можно посредством редактирования DGML-файла.

Преобразование узла в группу или добавление новой группы

  1. Для преобразования узла в группе открыть контекстное меню для узла.Выберите Перейти, DGML.

    Visual Studio открывает DGML-файл графа и выделяет элемент <Node/> для этого узла.

    - или -

    Для добавления новой группы файлов:

    1. Открыть контекстное меню для пустой области диаграммы.Выберите Перейти, DGML.

    2. В разделе <Nodes> добавьте новый элемент <Node/>.

  2. В элементе <Node/> добавьте атрибут Group, чтобы указать разворачивать группу при отображении или нет.Например:

    <Nodes>
       <Node Id="MyFirstGroup" Group="Expanded" />
       <Node Id="MySecondGroup" Group="Collapsed" />
    </Nodes>
    
  3. В разделе <Links> убедитесь, что элемент <Link/> со следующими атрибутами существует для каждой связи между узлом группы и дочерними узлами:

    • Атрибут Source, который определяет узел группы.

    • Атрибут Target, который определяет дочерний узел.

    • Атрибут Category, который определяет связь Contains между узлом группы и его дочерним узлом

    Например:

    <Links>
       <Link Category="Contains" Source="MyFirstNewGroup" Target="FirstGroupChildOne" />
       <Link Category ="Contains" Source="MyFirstNewGroup" Target="FirstGroupChildTwo" />
       <Link Category ="Contains" Source="MySecondNewGroup" Target="SecondGroupChildOne" />
       <Link Category="Contains" Source="MySecondNewGroup" Target="SecondGroupChildTwo" />
    </Links>
    

    Дополнительные сведения об атрибуте Category см. в Присвоение категорий узлам и ссылкам in Изменение и настройка графов зависимостей.

См. также

Основные понятия

Изменение и настройка графов зависимостей

Визуализация зависимостей кода на графах зависимостей