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

Чтобы увидеть и понять организацию кода и его зависимостей, можно создать графы зависимостей в Visual Studio Ultimate.Графы зависимостей, что и как они полезны?

Поддерживаются следующие проекты:

  • Проекты visual C# .NET и Visual Basic .NET, включая приложения хранилища Windows и файлы сборки (.dll или .exe).

  • Проекты Visual C++, включая приложения хранилища Windows, которые имеют управляемый код на языке C# или C++ (или собственный), файлы заголовков (h или #include), а двоичные файлы.

Видеоматериалы:

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

  • Инструкции по получению работу?

  • Визуализация зависимостей в коде

  • Совместно использовать графы зависимостей

  • Создание диаграммы для пакетной обработки

  • Устранение неполадок

Инструкции по получению работу?

  • Получите обзор решения: В меню Архитектура выберите Сформировать диаграмму зависимостей, Для решения.

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

    Граф зависимостей сборок верхнего уровня

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

    Граф с выделенными элементами и развернутыми группами

    Дополнительные сведения см. в разделе Получите обзор решения.Можно также запускать анализаторы для обнаружения потенциальных проблем в коде.Дополнительные сведения см. в разделе Нахождение потенциальных проблем в коде на графах зависимостей.

  • Визуализация конкретные зависимости в решении: В Обозреватель решений выберите элементы, которые вас интересуют.Можно выбрать проекты ссылки на сборку файлов, папок, типы и их члены.Чтобы найти конкретный элемент, используйте поле поиска Обозреватель решений.

    На панели инструментов Обозреватель решений выберите создайте новый документ диаграммыКнопка создания графа из выбранных узлов.

    - или -

    Перетащите элементы из Обозреватель решений к существующей таблице.

    СоветСовет

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

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

    Дополнительные сведения см. в разделе Визуализация конкретные зависимости в решении.Можно также запускать анализаторы для обнаружения потенциальных проблем в коде.Дополнительные сведения см. в разделе Нахождение потенциальных проблем в коде на графах зависимостей.

Графы зависимостей, что и как они полезны?

Графы зависимостей, обеспечивают визуальные способ проверить код и понимать его зависимостей между файлами и без поиска строки кода.Можно видеть элементы и отношения, как только узлов и ссылок или в виде стрелки.Например, предположим, что имеется анализ кода для выполнения.Имеется набор файлов, которые содержат ожидающие изменения.Можно представить код и зависимости этих изменений путем создания графа зависимостей из этих файлов.См. раздел Визуализация конкретные зависимости в решении.

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

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

СоветСовет

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

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

Граф зависимостей с узлами и связями

Можно также запускать анализаторы для обнаружения потенциальных проблем в коде.Дополнительные сведения см. в разделе Нахождение потенциальных проблем в коде на графах зависимостей.

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

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

  • Диаграмма интересуют только зависимости, которые автоматически.

  • Прежде чем создать диаграмму для всего решения, уменьшите область решения.

Visual Studio может работать с 1 ГБ памяти, порекомендовали, что в компьютере имеется по крайней мере 2 ГБ памяти во избежание длительные задержки, пока Visual Studio создает индекс кода и создает граф.

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

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

Она может занять больше времени создания диаграммы или добавления элементов в графе в обозревателе решений, когда свойство Копировать в выходной каталог элемента проекта будет установлено в Всегда копировать.Это может привести к проблемам с инкрементной построениями и Visual Studio перестроить проект каждый раз.В целях повышения производительности измените это свойство в Копировать более позднюю версию или PreserveNewest.Дополнительные сведения см. в разделе Инкрементные построения.

Визуализация зависимостей в коде

  • Получите обзор кода

  • Визуализация конкретные зависимостей в коде

  • Визуализация зависимости между C# или основе исходных файлами и файлы заголовка C++

  • Создание диаграммы для пакетирования с помощью GraphCmd.exe

СоветСовет

Для создания более полные графы для проектов C++, параметр компилятора данных обзора (/FR) необходимо установить на эти проекты.В противном случае появляется автоматически устанавливает сообщение и пробуждается этот параметр.Если сообщение появляется, можно установить параметр только для текущей диаграммы, выбрав ОК или параметра, и скрыть сообщение для всех последующих диаграммы.Сделать сообщение отображаться для последующих диаграмм, установиться следующий раздел реестра для 0 или удалять ключ:

HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0\NativeProvider : AutoEnableSbr

Дополнительные сведения см. в разделе /FR, /Fr (создать SBR-файл).

Получите обзор кода

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

Dd409453.collapse_all(ru-ru,VS.110).gifПолучите обзор решения

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

    Вы получаете диаграмму, которая отображает верхнего уровня сборки и статистические связи между ними.Толщина статистической связи показывает, сколько отдельных зависимостей связь представляет.Группа Внешние содержит что-либо вне решения, в том числе зависимости от платформы.Внешние сборки отображаются только те элементы, которые используются.

    Граф зависимостей сборок верхнего уровня

  2. Теперь можно исследовать эти сборки, развернув их.Переместите указатель мыши поверх сборки, а затем нажмите кнопку шеврона (^), если он отображается.(Клавиатура. Выберите элемент, а затем выберите ключ ПОШАГОВЫЙ (+)). Внесите эти же для пространств имен, классов и элементов, чтобы продолжить изучение кода.

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

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

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

Пример

Dd409453.collapse_all(ru-ru,VS.110).gifПолучите обзор сборок или бинарный

  • создайте пустая диаграмма или открывает существующую диаграмму (dgml-файл).Из внешнего Visual Studio, перетащите сборки или бинарный к диаграмме.

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

    Можно перетаскивать сборки или бинарный из проводника Windows только при запуске проводник Windows и Visual Studio на том же уровне разрешений элемента управления доступа пользователя (контролем учетных записей).Например, если контроль учетных записей включить и запуске Visual Studio от имени администратора, проводник Windows запрещает при перетаскивании операции.Чтобы избежать этого, убедитесь в том, что Visual Studio запущена от имени администратора или контроль учетных записей поворота.Обратите внимание, что в Windows 8, проводник Windows обозревателе файлов.

    -или-

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

    2. В первом столбце в разделе Файловая система выберите Выбор файлов.

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

    4. В Обозреватель архитектуры выберите сборки или бинарный.

    5. Справа от столбца, содержащего выбранные сборки или бинарный свернутый, выберите столбец действие, чтобы развернуть ее.

      СоветСовет

      Свернутый столбец действий отображается выбранным при перемещении указателя поверх него.

    6. В столбце действий в Команды выберите Открыть, чтобы сформировать диаграмму зависимостей.

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

Dd409453.collapse_all(ru-ru,VS.110).gifСоздание пустая диаграмма

  1. Чтобы открыть новую пустую диаграмму без добавления ее в решение, в меню Файл выберите Создать, Файл.

    -или-

    Чтобы добавить пустая диаграмма к папке Элементы решения в решении открыть контекстное меню для узла верхнего уровня решения.Выберите Добавить, Создать элемент.

  2. В Установлено выберите Общие.

  3. В правой панели выберите Документ ориентированных графов.

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

Визуализация конкретные зависимости в коде

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

Визуализация конкретные зависимости в решении

Визуализация конкретного кода

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

Dd409453.collapse_all(ru-ru,VS.110).gif

  1. В Обозреватель решений выберите элементы, которые вас интересуют.Можно выбрать проекты ссылки на сборку файлов, папок, типы и их члены.Чтобы найти конкретный элемент, используйте поле поиска Обозреватель решений.

    СоветСовет

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

  2. Чтобы изобразить элементы и их членов, на панели инструментов Обозреватель решений выберите создайте новый документ диаграммыКнопка создания графа из выбранных узлов.

    -или-

    Чтобы включить родительскую иерархию на диаграмме, откройте список создайте новый документ диаграммы… на панели инструментов Обозреватель решений, а затем выберите Новый граф зависимостей с предками.

    СоветСовет

    Можно также перетащить элементы в диаграмме.Во-первых, создайте пустая диаграмма или открывает существующую диаграмму (dgml-файл).Включать иерархию родительского контейнера, нажав и удерживая клавишу ключ CTRL при перетаскивании элементов.

    Вы получаете диаграмму, которая показывает, что выбранные элементы.

  3. Для изучения элементов можно развернуть их.Переместите указатель мыши поверх элемента, затем нажмите кнопку шеврона (^), если он отображается.Чтобы развернуть все узлы, открыть контекстное меню для диаграммы.Выберите Группа, Развернуть все.

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

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

  4. Для извлечения элементов, переданных из группы, выберите Повторное извлечение дочерних элементовЗначок "Повторно извлечь дочерние элементы" внутри группы.

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

    Для сборки выберите команду:

    Связанные сборки

    Добавление сборки, этот ссылки на сборку.Внешние сборки отображаются в группу Внешние.

    Ссылки на сборки

    Добавление сборок в решении, которые ссылаются на эту сборку.

    Для класса выберите команду:

    Базовые типы

    Для класса добавьте базовый класс и реализованные интерфейсы.

    Для интерфейса, добавить базовые интерфейсы.

    Производные типы

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

    Для интерфейса, добавьте производные интерфейсы и классы, реализующие или структуры.

    Все базовые типы

    Добавьте иерархию базового класса или интерфейса рекурсивно.

    Все производные типы

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

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

    Иерархия контейнеров

    Добавьте иерархию родительского контейнера.

    Используемые типы

    Добавьте все классы и их члены, этот класс используется.

    Введите Использовать-

    Добавьте все классы и их члены, которые используют этот класс.

    Для метода выберите команду:

    Иерархия контейнеров

    Добавьте иерархию родительского контейнера.

    Вызываемый Метод

    Добавьте методы, этот метод вызывает метод.

    Позвонить- методы

    Добавьте методы, которые вызывают этот метод.

    Переопределенные методы в базовых типах

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

    Ссылочные поля

    Добавьте ссылки на поля для данного метода.

    Для поля выберите команду:

    Иерархия контейнеров

    Добавьте иерархию родительского контейнера.

    Ссылки на методы

    Добавьте методы, которые ссылаются на это поле.

Пример

Dd409453.collapse_all(ru-ru,VS.110).gifВизуализация конкретные зависимости в сборках или бинарный

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

  2. В первом столбце в разделе Файловая система выберите Выбор файлов.

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

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

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

    СоветСовет

    Чтобы выбрать другие связанные элементы разверните свернутый столбец справа от столбца с вашими выделениями.В Навигация узла выберите типы элементов, которые вас интересуют.В Исходящая навигация или Входящая навигация выберите типы связей, которые вас интересуют.Дополнительные сведения см. в разделе Поиск кода с помощью обозревателя архитектуры.

  5. Найдите и выделите все элементы, которые нужно поместить в диаграмму.

  6. Для создания новой диаграммы на панели инструментов Обозреватель архитектуры выберите Создайте новый документ диаграммы из всех выбранных узловКнопка создания графа из выбранных узлов.

    Visual Studio создает граф и открытие его.

    -или-

    Чтобы добавить в выделение в диаграмме, выполните следующие действия:

    1. Открытие dgml-файл графа или создайте пустая диаграмма.

    2. На панели инструментов Обозреватель архитектуры выберите Добавьте все выбранные узлы в данный момент видимому документ диаграммыКнопка добавления выбранных узлов на граф.

      -или-

      Перетащите элементы из Обозреватель архитектуры к диаграмме.

Визуализация зависимости между C# и основе исходных файлов и файлов заголовка C++

Просмотр зависимостей между

Сделайте следующее

Все исходные файлы и файлы заголовков в решении

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

Граф зависимостей для машинного кода

Открытый в данный момент файл и связанные исходные файлы и файлы заголовков

  1. Откройте исходный файл или файл заголовка.

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

Граф зависимостей первого уровня для H-файла
ПримечаниеПримечание

При открытии решение, содержащее проекты Visual C++, он может занять некоторое время обновления базы данных IntelliSense.В этот момент может оказаться невозможным создать графы зависимостей для файлов заголовков (h) или #include до тех пор, пока база данных не будет завершено обновление IntelliSense.Можно наблюдать за ходом обновления в строке состояния Visual Studio.Для решения проблемы или сообщения, которые отображаются, поскольку некоторые параметры IntelliSense отключены см. в разделе Устранение неполадок.

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

Сохранить и совместно использовать диаграмму с другими пользователями Visual Studio

  • Используйте меню Файл чтобы сохранить диаграмму.

    -или-

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

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

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

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

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

    "Невозможно сохранить имя_файла вне каталога проекта.Связанные элементы не поддерживаются."

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

Экспортировать диаграмму в виде изображения, поэтому можно скопировать ее в других приложений, таких как Microsoft Word или PowerPoint

  1. Открыть контекстное меню для области диаграммы.Выберите Изменить, Копировать изображение.

  2. Вставьте изображение в другое приложение.

Экспортировать диаграмму как файл поэтому можно видеть его в средствах просмотра XPS XML или XAML, как Internet Explorer

  1. Открыть контекстное меню в области диаграммы.Выберите Сохранить как XPS.

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

  3. Присвойте графику.Убедитесь, что окно Тип файла установлено в XPS хранит (*.xps).Выберите Сохранить.

Создание диаграммы для пакетной обработки

Можно создавать документы графов (файлы dgml) в пакетном режиме с помощью программы командной строки GraphCmd.exe.Например, можно запустить средство после каждого построения для нахождения зависимостей, которые изменились между построениями.Этот инструмент расположен в следующей папке: C:\Program Files\Microsoft Visual Studio 11.0\Common7\IDE.

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

GraphCmd.exe поддерживает только код .NET и приводит сведения о зависимостях только для сборок или файлы dgml, не исходный код в решении Visual Studio или файлы проекта.GraphCmd.exe выполняется вне Visual Studio, поэтому поддержка действий в запросы DGQL ограничена.

Используйте следующий синтаксис для GraphCmd.exe.

GraphCmd -? -all -exceptions -input File_Name -query File_Name -exec "DGQL_Statement" -output File_Name -path alias=path

СоветСовет

Следующие параметры можно задать несколько раз: -input, -query, -exec и -path.

В следующей таблице перечислены параметры GraphCmd.exe.

-?

Отображает справку для GraphCmd.exe.

-all

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

-exceptions

Выдает отчет по исключениям запросов в виде файла документа графа (DGML).

-input Имя_файла

Обрабатывает заданный DGML-файл.

Это полезно для post-processing большой размер dgml-файла и фильтровать его, чтобы можно было представить его проще в Visual Studio.

-query Имя_файла

Выполняет заданный файл языка запросов направленных графов (DGQL) file.

Пример

-exec "DGQL_инструкция"

Выполняет указанную инструкцию DGQL.

См. раздел Основные сведения о непосредственно на языке запросов (DGQL).

-output Имя_файла

Выводит заданный DGML-файл.

-path псевдоним=путь

Задайте новый псевдоним для использования во вводе и выводе документов DGML.

Например:

GraphCmd -output MyGeneratedGraph.dgml -path "MyPathAlias=C:\Program Files\..."

См. раздел Псевдонимы для Общ-, Используемых путей.

Dd409453.collapse_all(ru-ru,VS.110).gifПсевдонимы для общ-, используемых путей

Замена часто используемых путей псевдонимами уменьшает размер DGML-файла и время, требуемое на загрузку или сохранение файла.Для создания псевдонима добавьте раздел <Paths></Paths> в конце DGML-файла.В этом разделе добавьте элемент <Path/> для того, чтобы определить псевдоним для пути.

<Paths>
   <Path Id="MyPathAlias" Value="C:\...\..." />
</Paths>

Чтобы сослаться на псевдоним из элемента DGML-файла, следует окружить значение Id элемента <Path/> знаком доллара ($) и круглыми скобками (()).

<Nodes>
   <Node Id="MyNode" Reference="$(MyPathAlias)MyDocument.txt" />
</Nodes>
<Properties>
   <Property Id="Reference" Label="My Document" DataType="System.String" IsReference="True" />
</Properties>

Чтобы изменить файлы dgml см. в разделе Изменение и настройка графов зависимостей.

Dd409453.collapse_all(ru-ru,VS.110).gifОсновные сведения о языке запросов направленных графов (DGQL);

DGQL — простой язык запросов, который используется для построения DGML.Инструкция DGQL следует переменному шаблону выделения узлов, когда каждое выделение узлов создает входную информацию для следующего действия, выходная информация которого является входной для следующего выделения узлов и т. д.

Инструкции DGQL имеют следующий формат.

<node selection> / <action> / <node selection> / <action> / ...

Следующая таблица описывает синтаксис DGQL, используемый для выделения узлов.

*

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

+ "text"

Выбор всех узлов, содержащих "text".

+ Id.Equals("text")

Выбор всех узлов, атрибут Id которых равен "text".

+ Background.Contains("text")

Выбор всех узлов, значение атрибута Background которых содержит строку "text".

+ "text1" + "text2" + ...

Выбор всех узлов, содержащих "text1" или "text2".

+ MyProperty="True"

Выбор всех узлов, у которых есть свойство с именем MyProperty, значение которого равно "True".

- Label.Contains("text")

Выбор всех узлов, кроме тех, значение атрибута Label совпадает с результатом работы команды Contains с параметром "text".

+ Category.Is("MyCategory")

Выбор всех узлов, которые содержат категорию с именем MyCategory или от нее унаследованы MyCategory.

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

Пример действия

Описание

Microsoft.Contains

Возвращает все узлы, содержащиеся во входящих узлах.Можно заменить Contains другой категорией ссылок.

Microsoft.Open

Открывает исходный код для входящих узлов.

ПримечаниеПримечание
Работает только в Visual Studio.

Microsoft.AllOutBoundLinks

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

Microsoft.AllInboundLinks

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

Microsoft.Core.CreateGroupsByProperties

Вызывает действие GroupByProperties.

Microsoft.AllNodes

Возвращает все узлы графа.

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

Тип

Описание

Node:Both:Category

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

Link:Both:Category

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

Link:Backward:Category

Возвращает все узлы, указывающие на входящие узлы ссылками, категория которых равна Category.

Link:Forward:Category

Возвращает все узлы, на которые указывают ссылками, категория которых равна Category, входящие узлы.

Dd409453.collapse_all(ru-ru,VS.110).gifСоветы

  • Обычно существует действие "по умолчанию" для данного набора входящих узлов, выбираемое автоматически обозревателем архитектуры.Для получения подобного поведения используйте пустое действие: "//".

  • Пробелы не являются значимыми знаками в DGQL, таким образом можно записать запрос в одну строку, если это требуется.Это полезно, если используется параметр –exec со средством GraphCmd.

  • При отладке DGQL можно использовать действие "Execute Expanded" в обозревателе архитектуры. Это позволит видеть каждый этап выполнения запроса и поможет найти шаг, который не выдает ожидаемый результат.

Dd409453.collapse_all(ru-ru,VS.110).gifПример

Следующая инструкция DGQL выполняет запрос, описанный в следующих шагах.

+ Id.Equals("Microsoft.Solution.ClassView") / "Microsoft.Solution.ClassView" / * / "Node:Both:CodeSchema_Class" / + CodeSchemaProperty_IsPublic.Equals("True")
  1. Выберите узел Представление классов в первом столбце Обозреватель архитектуры.

  2. Запустите действие "Microsoft.Solution.ClassView", возвращая все пространства имен в решении. 

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

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

  5. Фильтрация только тех классов, у которых свойство CodeSchemaProperty_IsPublic="True".

Технически действие "Microsoft.Solution.ClassView" не обязательно, поскольку это действие "по умолчанию" для узла Class View.Поэтому можно заменить это действие действием // для упрощения запроса и отформатировать его в одну строку, как показано ниже.

+Id.Equals("Microsoft.Solution.ClassView")//*/"Node:Both:CodeSchema_Class"/+CodeSchemaProperty_IsPublic.Equals("True")

Устранение неполадок

Следующие элементы не поддерживаются для кода C# и C++:

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

  • Большинство пунктов меню Показать недоступны для кода C# и C++.

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

Проблема

Возможная причина

Решение

Граф зависимостей не суменная для создания.

Отсутствуют проекты в решении не были созданы успешно.

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

Visual Studio не отвечает при попытке создать граф зависимостей из меню Архитектура.

Файл базы данных программы (.pdb) может быть поврежден.

В PDB-файле хранятся сведения для отладки, такие как сведения о типе, методе и исходном файле.

Дополнительные сведения см. в разделе [УСТАРЕЛО] Файл базы данных программы (C++).

Перестройте решение и повторите попытку.

Определенные параметры базы данных обзора IntelliSense отключены.

Возможно, отключены некоторые параметры IntelliSense в диалоговом окне Параметры в Visual Studio.

Включите нужные параметры.

Дополнительные сведения см. в разделе "Параметры", "Текстовый редактор", C/C++, "Дополнительно".

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

Эта проблема возникает из-за невозможности разрешить имя метода.

Возможно, в двоичном файле отсутствует базовая таблица перемещений.

Включите параметр /FIXED:NO в компоновщике.

Дополнительные сведения см. в разделе /FIXED (фиксированный базовый адрес).

Возможно, файл базы данных программы (.pdb) не построен.

В PDB-файле хранятся сведения для отладки, такие как сведения о типе, методе и исходном файле.

Дополнительные сведения см. в разделе [УСТАРЕЛО] Файл базы данных программы (C++).

Включите параметр /DEBUG в компоновщике.

Дополнительные сведения см. в разделе /DEBUG (создать отладочную информацию).

Невозможно открыть или найти PDB-файл в ожидаемом местоположении.

Убедитесь, что PDB-файл существует в ожидаемом местоположении.

Сведения, необходимые для отладки, удалены из PDB-файла.

Если в компоновщике использовался параметр /PDBSTRIPED, включите полный PDB-файл.

Дополнительные сведения см. в разделе /PDBSTRIPPED (удалить закрытые символы).

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

Если вызывающим методом является преобразователь, попробуйте использовать _declspec(dllimport), чтобы избежать преобразования.

Пример

Что же можно ли сделать?

Где можно получить дополнительные сведения.

Категория

Ссылки

Форумы

Блоги