Сопоставление зависимостей в коде в диаграммах зависимостей
Для понимания зависимостей в коде следует сопоставить их с Visual Studio Ultimate. Для понимания зависимостей в коде следует визуализировать их путем создания карт кода (только в Visual Studio Ultimate). Это поможет увидеть, как код сочетается друг с другом без чтения файлов и строк кода.
Далее приводится несколько ссылок на видеоролики.
Далее приводится список необходимых ресурсов.
Код Visual C# .NET или Visual Basic .NET в решении или в сборках (DLL или EXE).
Машинный или управляемый код C или C++ в проектах Visual C++, файлы заголовков (H-файлы или #include), или двоичные файлы.
Visual Studio 2013 с обновлением 3 для сопоставления зависимостей в:
проектах, в которых код совместно используется несколькими приложениями;
Проекты и сборки X++, созданные из модулей .NET для Microsoft Dynamics AX
Можно также перетаскивать сборки и двоичные файлы из проводника в существующую диаграмму и получать обозначенные цветом отношения.
Начните здесь.
Чтобы увидеть все зависимости в решении, перейдите в меню Архитектура. Нажмите Сформировать диаграмму зависимостей и выберите Для решения.
-или-
Чтобы увидеть конкретные зависимости в решении, откройте обозреватель решений. Выберите проекты, ссылки на сборки, папки, файлы, типы или члены, которые вас интересуют. В панели инструментов обозревателя решений щелкните Создать новый документ диаграммы
.
Также можно:
просматривать зависимости между исходными файлами C или C++ и файлами заголовков;
Совместное использование диаграмм зависимостей
Создание диаграмм программными средствами
Просмотр всех зависимостей
Просмотр зависимостей во всем решении
В меню Архитектура щелкните Сформировать диаграмму зависимостей и выберите Для решения.
Отобразится диаграмма со сборками верхнего уровня и совокупными связями между ними. Чем шире совокупная связь, тем больше зависимостей она представляет. Группа Внешние содержит объекты вне решения, в том числе зависимости платформы. Во внешних сборках отображаются только используемые элементы.
Чтобы увидеть внутреннее содержание сборки, разверните ее. Наведите указатель мыши на верх сборки и нажмите значок шеврона (^), когда он появится. (На клавиатуре: выберите элемент и нажмите клавишу ПЛЮС (+).) Чтобы изучить более глубокие уровни кода, проделайте то же самое для пространств имен, типов и членов.
По умолчанию отношения вложений представляются в виде групп, которые можно развернуть и свернуть. Чтобы просмотреть отношения групп в виде связей, в контекстном меню диаграммы последовательно выберите Группы и Отключить группировку.
Чтобы проверить элементы и зависимости, представленные совокупной связью, сначала выберите связь, а затем откройте ее контекстное меню. Щелкните Показать и выберите Участвующие связи в текущей диаграмме или Участвующие связи в новой диаграмме.
Visual Studio разворачивает группы на обоих концах связи и отображает только те элементы и зависимости, которые участвуют в связи.
Для получения дополнительных сведений об элементе или связи, наведите указатель на элемент, пока не появится подсказка. Будут показаны категории, которые представляет связь.
Чтобы увидеть, что означает цвет связи, в панели инструментов диаграммы щелкните элемент Легенда.
Если отображается зеленая связь, это не обязательно означает наличие только отношения наследования. Это могут быть также вызовы методов, но они скрыты за отношением наследования.
Чтобы просмотреть зависимости между членами в разных группах, выберите элемент на диаграмме.
Для поиска потенциальных проблем в коде запустите анализатор.
Пример
Просмотр зависимостей в сборках или двоичных файлах
Создайте пустую диаграмму или откройте существующую диаграмму (DGML-файл). Вне Visual Studio перетащите сборки или двоичные файлы на диаграмму.
Примечание
Сборки или двоичные файлы можно перетаскивать из проводника Windows, только если проводник Windows и Visual Studio запущены на одном уровне разрешений управления доступом на уровне пользователей.Например, если управление доступом на уровне пользователей включено и среда Visual Studio запущена с правами администратора, проводник Windows заблокирует операцию перетаскивания.Для обхода этой проблемы убедитесь в том, что программа Visual Studio запущена с правами администратора, или выключите управление доступом на уровне пользователей.Обратите внимание, что в Windows 8 проводник Windows называется проводником.
Создание пустой диаграммы
В обозревателе решений откройте контекстное меню для верхнего узла решения. Нажмите кнопку Добавить и выберите Создать элемент.
В разделе Установленные выберите Общие.
В правой области выберите Документ ориентированных диаграмм.
Теперь у вас есть пустая диаграмма, который появляется в папке элементов решения.
Чтобы открыть новую пустую диаграмму, не добавляя ее в решение, в меню Файл щелкните Создать и выберите Файл.
Чтобы добавить пустую диаграмму в проект моделирования, откройте меню Архитектура и выберите Создать диаграмму.
Вопросы и ответы
Вопрос: Почему создание диаграммы занимает так много времени?
Ответ. При создании диаграммы зависимостей в первый раз Visual Studio индексирует все найденные зависимости. Этот процесс может занять некоторое время, особенно для больших решений, но это улучшит дальнейшую производительность. При изменении кода Visual Studio повторно индексирует только обновленный код. Если вы не хотите ждать завершения создания диаграммы, можно в любой момент отменить это действие и попробовать выполнить следующее.
Построить диаграмму только тех зависимостей, которые вас интересуют.
Уменьшите область решения перед созданием диаграммы для всего решения.
Хотя Visual Studio может выполняться при 1 ГБ памяти, рекомендуется, чтобы на компьютере было по крайней мере 2 ГБ памяти во избежание длительных задержек во время создания индекса кода и построения диаграммы в Visual Studio.
Создание диаграмм или добавление элементов к диаграмме из обозревателя решений может занять некоторое времени, если для свойства Копировать в выходной каталог задано значение Всегда копировать. Это может привести к проблемам с добавочными сборками и к тому, что Visual Studio будет выполнять повторную сборку проекта каждый раз. Чтобы повысить производительность, измените значение этого свойства на Копировать более позднюю версию или PreserveNewest. См. раздел Инкрементные построения.
Вопрос: Почему Visual Studio не создал диаграмму?
Ответ. Это может произойти, когда ни один проект в решении не был построен успешно. Visual Studio создает диаграмму, если хотя бы одна сборка проекта завершается успешно. Диаграмма будет отображать зависимости только для успешно построенного кода. Если при создании некоторых компонентов произошли ошибки построения, эти ошибки отображаются на диаграмме. Убедитесь, что компонент действительно создан и имеет зависимости, прежде чем принимать решения по архитектуре на основании диаграммы.
Просмотр конкретных зависимостей
В качестве примера предположим, что имеется проверка кода для выполнения в некоторых файлах с ожидающими изменениями. Чтобы просмотреть зависимости в этих изменениях, создайте диаграмму зависимостей из этих файлов.
Просмотр конкретных зависимостей в решении
Откройте обозреватель решений. Выберите проекты, ссылки на сборки, папки, файлы, типы или члены, которые вас интересуют.
Постройте диаграмму элементов и их членов. В панели инструментов обозревателя решений щелкните Создать новый документ диаграммы
.
Чтобы найти элементы, имеющие зависимости от типов и членов, откройте контекстное меню типа или члена в обозревателе решений. Выберите тип зависимости. Затем выберите результаты.
Чтобы включить родительскую иерархию вместе с элементами, в панели инструментов обозревателя решений откройте список Создать новый документ диаграммы.... Щелкните Создать диаграмму зависимостей с предками.
Можно также перетащить элементы в пустую или существующую диаграмму. Чтобы создать пустую диаграмму, в меню Файл последовательно выберите пункты Создать, Файл, Документ ориентированных диаграмм. Чтобы включить родительскую иерархию для элементов, нажмите и удерживайте клавишу CTRL, перетаскивая элементы.
Примечание
Если добавить элементы из проекта, который совместно используется несколькими приложениями, такими как Windows Phone или Магазин Windows, эти элементы отобразятся в сопоставлении с текущим активным проектом приложения.Если изменить контекст на другой проект приложения и добавить дополнительные элементы из общего проекта, эти элементы отобразятся в сопоставлении с новым активным проектом приложения.Операции, выполняемые с элементом в сопоставлении, применяются только к тем элементам, которые используют тот же контекст.
Для исследования элементов разверните их. Наведите указатель мыши на элемент и нажмите значок шеврона (^), когда он отобразится. Чтобы развернуть все элементы, откройте контекстное меню диаграммы. Щелкните элемент Группа и выберите Развернуть все.
Примечание
Этот параметр недоступен, если при развертывании всех групп диаграмма станет непригодна к использованию, или возникнут проблемы с памятью.
Для просмотра элементов, которые существуют в коде, но не отображаются на диаграмме, нажмите Повторно извлечь дочерние элементы
. Эти члены группы отображаются в другом стиле, чтобы их было проще увидеть. См. раздел Изменение и настройка графов зависимостей.
Для просмотра дополнительных элементов, связанных с отображенным в диаграмме элементом, откройте контекстное меню для этого элемента. Щелкните Показать и выберите нужный тип отношения.
Для сборки выберите следующее.
Связанные сборки
Добавьте сборки, на которые ссылается данная сборка. Внешние сборки отображаются в группе Внешние.
Ссылки на сборки
Добавьте в решение сборки, которые ссылаются на данную сборку.
Для класса выберите следующее.
Базовые типы
Для класса добавьте базовый класс и реализованные интерфейсы.
Для интерфейса добавьте базовые интерфейсы.
Производные типы
Для класса добавьте производные классы.
Для интерфейса добавьте производные интерфейсы и реализующие классы или структуры.
Все базовые типы
Рекурсивно добавьте иерархию базовых классов или интерфейсов.
Все производные типы
Для класса рекурсивно добавьте все производные классы.
Для интерфейса рекурсивно добавьте все производные интерфейсы и реализующие классы или структуры.
Иерархия вложений
Добавьте родительскую иерархию контейнера.
Используемые типы
Добавьте все классы и их члены, используемые данным классом.
Использующие типы
Добавьте все классы и их члены, которые используют данный класс.
Для метода выберите следующее.
Иерархия вложений
Добавьте родительскую иерархию контейнера.
Вызываемые методы
Добавьте методы, вызываемые данным методом.
Вызывающие методы
Добавьте методы, вызывающие данный метод.
Переопределенные методы в базовых типах
Для метода, переопределяющего другие методы или реализующего метод интерфейса, добавьте все абстрактные или виртуальные методы в переопределенные базовые классы и реализованный метод интерфейса (если имеется).
Ссылочные поля
Добавьте поля, на которые ссылается данный метод.
Для поля выберите следующее.
Иерархия вложений
Добавьте родительскую иерархию контейнера.
Ссылающиеся методы
Добавьте методы, которые ссылаются на это поле.
Просмотр конкретных зависимостей в сборках или двоичных файлах
В меню Архитектура щелкните Окна и выберите Обозреватель архитектуры.
В первом столбце, в разделе Файловая система выберите команду Выбор файлов.
В окне Открыть найдите и выберите сборки или двоичные файлы. Нажмите кнопку Открыть, чтобы добавить их в следующий столбец в обозревателе архитектуры.
В следующем столбце выберите сборки или двоичные файлы.
По умолчанию в следующем столбце отображаются элементы, содержащиеся в выбранных элементах.
Совет
Чтобы выбрать другие связанные элементы, разверните свернутый столбец справа от столбца с выбранными элементами.В разделе Навигация узла выберите требуемые типы элементов.В разделе Исходящая навигация или Входящая навигация выберите требуемые типы отношений.См. раздел Поиск кода с помощью обозревателя архитектуры.
Найдите и выберите все элементы, которые нужно отобразить на диаграмме.
Чтобы создать новую диаграмму, в панели инструментов обозревателя архитектуры выберите Создать новый документ диаграммы из выбранных узлов
.
-или-
Чтобы добавить выбранные элементы на диаграмму, выполните следующие действия.
Откройте DGML-файл диаграммы или создайте пустую диаграмму.
В панели инструментов обозревателя архитектуры выберите Добавить все выбранные узлы в отображаемый в настоящее время документ диаграммы
.
-или-
Перетащите элементы из области Обозреватель архитектуры на диаграмму.
Просмотр зависимостей между исходными файлами C и C++ и файлами заголовков
Если требуется создать более полные диаграммы для проектов C++, установите в этих проектах параметр компилятора для просмотра информации (/FR). См. раздел /FR, /Fr (создать SBR-файл). В противном случае отобразится запрос на установку этого параметра. При нажатии кнопки ОК этот параметр будет установлен только для текущей диаграммы. Можно скрыть это сообщение для всех последующих диаграмм. Если это сообщение было скрыто, можно снова сделать его видимым. Установите значение 0 для следующего раздела реестра или удалите этот раздел:
HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0\NativeProvider : AutoEnableSbr
При открытии решения, содержащего проекты Visual C++, обновление базы данных IntelliSense может занять некоторое время. В этот момент может оказаться невозможным создание диаграмм зависимостей для файлов заголовков (H или #include) до тех пор, пока не завершится обновление базы данных IntelliSense. Можно наблюдать за ходом обновления в строке состояния Visual Studio. Сведения о разрешении проблем или сообщений, которые появляются потому, что некоторые параметры IntelliSense отключены, см. в разделеУстранение неполадок диаграмм для кода C и C++.
Чтобы просмотреть зависимости между всеми исходными файлами и файлами заголовков в решении, в меню Архитектура нажмите Сформировать диаграмму зависимостей и выберите Для включаемого файла.
Чтобы просмотреть зависимости между открытым файлом и связанными с ним исходными файлами и файлами заголовков, откройте либо исходный файл, либо файл заголовка. Откройте контекстное меню в любом месте файла. Щелкните Создать диаграмму включаемых файлов.
Устранение неполадок диаграмм для кода C и C++
Для кода C и C++ следующие элементы не поддерживаются.
Базовые типы не отображаются на диаграммах, включающих родительскую иерархию.
Большинство пунктов меню Показать недоступны для кода C и C++.
Следующие проблемы могут возникать при создании диаграмм зависимостей для кода C и C++.
Проблема |
Возможная причина |
Решение |
---|---|---|
Не удалось создать диаграмму зависимостей. |
Отсутствуют успешно собранные проекты в решении. |
Исправьте ошибки сборки, которые произошли, и снова создайте диаграмму. |
Visual Studio не отвечает при попытке создать граф зависимостей из меню Архитектура. |
Файл базы данных программы (.pdb) может быть поврежден. В PDB-файле хранятся сведения для отладки, такие как сведения о типе, методе и исходном файле. |
Перестройте решение и повторите попытку. |
Определенные параметры базы данных обзора IntelliSense отключены. |
Возможно, отключены некоторые параметры IntelliSense в диалоговом окне Параметры в Visual Studio. |
Включите нужные параметры. См. раздел "Параметры", "Текстовый редактор", C/C++, "Дополнительно". |
На узле методов отображается сообщение Неизвестные методы. Эта проблема возникает из-за невозможности разрешить имя метода. |
Возможно, в двоичном файле отсутствует базовая таблица перемещений. |
Включите параметр /FIXED:NO в компоновщике. См. раздел /FIXED (фиксированный базовый адрес). |
Возможно, файл базы данных программы (.pdb) не построен. В PDB-файле хранятся сведения для отладки, такие как сведения о типе, методе и исходном файле. |
Включите параметр /DEBUG в компоновщике. См. раздел /DEBUG (создать отладочную информацию). |
|
Невозможно открыть или найти PDB-файл в ожидаемом местоположении. |
Убедитесь, что PDB-файл существует в ожидаемом местоположении. |
|
Сведения, необходимые для отладки, удалены из PDB-файла. |
Если в компоновщике использовался параметр /PDBSTRIPED, включите полный PDB-файл. См. раздел /PDBSTRIPPED (удалить закрытые символы). |
|
Вызывающий метод не является функцией и представляет собой либо преобразователь в двоичном файле, либо указатель в разделе данных. |
Если вызывающим методом является преобразователь, попробуйте использовать _declspec(dllimport), чтобы избежать преобразования. Пример |
Совместное использование диаграмм зависимостей
Совместное использование диаграммы другими пользователями Visual Studio
Используйте меню Файл для сохранения диаграммы.
-или-
Чтобы сохранить диаграмму как часть определенного проекта, откройте контекстное меню поверхности диаграммы. Выберите Переместить <DependencyGraphName.dgml> в и проект, в котором требуется сохранить диаграмму.
Visual Studio сохраняет диаграмму как DGML-файл, который можно совместно использовать с другими пользователями Visual Studio Ultimate, Visual Studio Premium и Visual Studio Professional.
Примечание
Перед тем как предоставить общий доступ к диаграмме пользователям Visual Studio Premium и Visual Studio Professional, разверните все группы, отобразите скрытые узлы и связи между группами и извлеките все удаленные узлы, которые требуется показать другим пользователям.В противном случае другие пользователи не увидят эти элементы.
При сохранении графа, находящегося в проекте моделирования или скопированного из проекта моделирования в другое местоположение, может произойти следующая ошибка.
"Невозможно сохранить имяФайла вне каталога проекта.Связанные элементы не поддерживаются."
Visual Studio отображает ошибку, но в любом случае создает сохраненную версию.Чтобы избежать этой ошибки, создайте граф вне проекта моделирования.Затем его можно сохранить в требуемом расположении.Простое копирование файла в другое расположение в решении и последующая попытка сохранения не помогают.
Экспорт диаграммы как изображения для копирования в другие приложения, например Microsoft Word или PowerPoint
Откройте контекстное меню поверхности диаграммы. Щелкните Правка и выберите Копировать изображение.
Вставьте изображение в другое приложение.
Экспорт диаграммы как XPS-файла для просмотра в средствах просмотра XML или XAML, например в Internet Explorer
Откройте контекстное меню поверхности диаграммы. Щелкните Сохранить как XPS.
Выберите место для сохранения файла.
Присвойте имя диаграмме. Убедитесь, что в окне Тип файла выбрано значение XPS-файлы (*.xps). Нажмите кнопку Сохранить.
Создание диаграмм программными средствами
Для создания документов диаграмм (DGML-файлов), чтобы можно было работать во время пакетной обработки, запустите программу командной строки GraphCmd.exe. Например, чтобы найти зависимости, изменявшиеся между построениями, запускайте эту программу после каждого построения. Эту программу можно найти в следующей папке: C:\Program Files\Microsoft Visual Studio 12.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
Ниже приведены параметры для GraphCmd.exe.
Следующие параметры можно задать несколько раз: -input, -query, -exec и -path.
-? |
Отображает справку для GraphCmd.exe. |
-all |
Включает все промежуточные результаты запроса, а не только последний набор узлов. |
-exceptions |
Выдает отчет по исключениям запросов в виде файла документа графа (DGML). |
-input File_Name |
Обрабатывает заданный DGML-файл. Это полезно для постобработки больших DGML-файлов и их фильтрации для упрощения их визуализации в Visual Studio. |
-query File_Name |
Выполняет заданный файл языка запросов направленных графов (DGQL) file. Пример
|
-exec "DGQL_Statement" |
Выполняет указанную инструкцию DGQL. См. раздел Основные сведения о языке запросов направленных графов (DGQL). |
-output File_Name |
Выводит заданный DGML-файл. |
-path псевдоним=путь |
Задайте новый псевдоним для использования во вводе и выводе документов DGML. Например:
См. раздел Псевдонимы для часто используемых путей. |
Псевдонимы для часто используемых путей
Замена часто используемых путей псевдонимами уменьшает размер 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-файлы, см. раздел Изменение и настройка графов зависимостей.
Дополнительные сведения о языке запросов направленных графов (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, входящие узлы. |
Советы
Обычно существует действие "по умолчанию" для данного набора входящих узлов, выбираемое автоматически обозревателем архитектуры. Для получения подобного поведения используйте пустое действие: "//".
Пробелы не являются значимыми знаками в DGQL, таким образом можно записать запрос в одну строку, если это требуется. Это полезно, если используется параметр –exec со средством GraphCmd.
При отладке DGQL можно использовать действие "Execute Expanded" в обозревателе архитектуры. Это позволит видеть каждый этап выполнения запроса и поможет найти шаг, который не выдает ожидаемый результат.
Пример
Следующая инструкция DGQL выполняет запрос, описанный в следующих шагах.
+ Id.Equals("Microsoft.Solution.ClassView") / "Microsoft.Solution.ClassView" / * / "Node:Both:CodeSchema_Class" / + CodeSchemaProperty_IsPublic.Equals("True")
Выберите узел Представление классов в первом столбце обозревателя архитектуры.
Выполните действие "Microsoft.Solution.ClassView", возвращающее все пространства имен в решении.
Используется * для выбора всех пространств имен.
Выбор всех узлов с категорией CodeSchema_Class, которые связаны с этими пространствами имен ссылкой любого направления. Обычно это будут ссылки включения.
Фильтрация только тех классов, у которых свойство CodeSchemaProperty_IsPublic="True".
Технически действие "Microsoft.Solution.ClassView" не обязательно, поскольку это действие "по умолчанию" для узла Class View. Поэтому можно заменить это действие действием // для упрощения запроса и отформатировать его в одну строку, как показано ниже.
+Id.Equals("Microsoft.Solution.ClassView")//*/"Node:Both:CodeSchema_Class"/+CodeSchemaProperty_IsPublic.Equals("True")
Что еще можно сделать?
Где можно получить дополнительные сведения?
Категория |
Ссылки |
---|---|
Форумы |
|
Блоги |