Поделиться через


Практическое руководство. Проверка кода C and C++ по схеме слоев

Данный пакет дополнительных компонентов Visual Studio 2010 позволяет принудительно применять архитектурные ограничения в отношении кода C и С++ в Visual Studio 2010 Ultimate по мере изменения кода. Для выполнения этой задачи регулярно запускайте проверку слоев, чтобы сравнить зависимости в коде с зависимостями на схеме слоев. Схема слоев описывает архитектуру системы и позволяет организовать пространства имен, проекты и другие артефакты решения в логические, абстрактные группы или слои. Эти слои описывают основные компоненты системы или задачи, выполняемые этими артефактами. Для создания схемы слоев для кода C или С++ выполните те же шаги, что и при работе с кодом .NET. Дополнительные сведения см. в разделах Практическое руководство. Создание схем слоев из артефактов и Пакеты функций Visual Studio.

Примечание

Для использования этой функции необходимо установить пакет дополнительных компонентов для Visual Studio 2010.

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

Кроме того, проверка слоев помогает выполнить следующие задачи.

  • Увидеть различия между существующим кодом и предполагаемой структурой.

  • Найти код, организованный не так, как предполагалось, или имеющий нежелательные зависимости.

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

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

  • Выполнить рефакторинг или миграцию кода в другую структуру.

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

В этом разделе описываются требования, которые необходимо удовлетворить перед выполнением проверки слоев в коде C или С++.

Требования

  • Убедитесь, что Visual C# установлен с системой Visual Studio.

  • Создайте проект моделирования со схемой слоев.

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

  • Сведения о проверке проектов С и С++ в Team Foundation Build см. в разделе Требования к построению Team Foundation.

Удовлетворив эти требования, можно выполнять те же действия, что и при работе с кодом .NET. Порядок операций см. в разделе Практическое руководство. Проверка кода .NET по схеме слоев. Сведения о проблемах с проектами моделирования и схемами слоев, созданными из кода C или С++, см. в разделе Устранение неполадок.

Создание проекта моделирования со схемой слоев

Решение Visual Studio должно включать проект моделирования со схемой слоев.

Создание проекта моделирования

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

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

  3. Переименуйте проект и нажмите кнопку ОК.

    Visual Studio добавляет в решение новый проект моделирования.

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

Создание схемы слоев

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

  2. Переименуйте схему, выберите проект моделирования и нажмите кнопку ОК.

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

  3. Из окна Обозреватель решений перетащите хотя бы один проект C или С++ на поверхность схемы слоев.

    - или -

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

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

    • Ссылки проекта на проект моделирования.

    • Элемент <Import> в файл проекта моделирования (MODELPROJ-файл), импортирующий пользовательский TARGETS-файл и включающий проверку слоев дл кода С или С++.

  4. Определите другие слои, свяжите с ними артефакты и опишите предусмотренные зависимости между этими артефактами.

    Дополнительные сведения см. в разделах Практическое руководство. Создание схем слоев из артефактов и Схемы слоев: рекомендации.

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

    Важно!

    Если сохранить только схему слоев (не сохраняя проект моделирования) и закрыть решение, необходимо будет добавить ссылки проекта С или С++ и импортировать пользовательские TARGETS-файлы в проект моделирования вручную.Дополнительные сведения см. в разделе Устранение неполадок.

Важно!

При создании схемы слоев из кода C или C++ в Visual Studio 2010 Ultimate в операционной системе Windows XP или Windows 2003 абсолютный путь используется для создания записи в файле проекта моделирования (MODELPROJ-файле) и импорта пользовательского файла Microsoft.VisualStudio.Progression.NativeProvider.targets.В связи с этим при попытке открыть решение в Windows 7, Windows Vista или Windows Server 2008 могут возникнуть проблемы.Если Visual Studio 2010 Ultimate выполняется в операционной системе Windows XP или Windows 2003, открыть схемы слоев, созданные в Visual Studio 2010 Ultimate в операционной системе Windows 7, Windows Vista или Windows Server 2008, невозможно.Описание способов разрешения этой проблемы см. в разделе Устранение неполадок.

Добавление двоичных файлов в проект моделирования

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

Добавление двоичных файлов в проект моделирования

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

  2. В диалоговом окне Добавление существующего элемента найдите двоичные файлы, выберите их и нажмите кнопку ОК.

    Двоичные файлы отображаются в проекте моделирования.

  3. В окне Обозреватель решений щелкните добавленный двоичный файл и нажмите клавишу F4, чтобы открыть окно Свойства.

  4. Для каждого двоичного файла задайте свойству Действие при построении значение Проверка.

Требования к построению Team Foundation

Для проверки проектов C и C++ на сервере Team Foundation Build необходимо выполнить следующие действия:

  1. Перед компиляцией проектов убедитесь, что на сервере установлены следующие компоненты:

    Совет

    Если система Visual Studio 2010 Ultimate установлена на сервере, вместо выполнения шагов 2 и 3 можно установить на сервере пакет дополнительных компонентов.В противном случае если на сервере не существует папки …\<имя_пакета_дополнительных_компонентов_Visual_Studio>\<номер_версии_пакета_дополнительных_компонентов_Visual_Studio>, ее необходимо будет создать.За исключением случаев установки пакета дополнительных компонентов в другом местоположении %LocalAppData% — имя_диска:\Users\имя_пользователя\AppData\Local.В Windows XP или Windows 2003 вместо %LocalAppData% следует использовать переменную %AppData%.

  2. Если установлен пакет дополнительных компонентов визуализации и моделирования Visual Studio 2010:

    Копируйте файл Microsoft.VisualStudio.Progression.NativeProvider.targets из следующего местоположения установки пакета дополнительных компонентов в то же местоположение на сервере:

    %LocalAppData%\Microsoft\VisualStudio\10.0\Extensions\Microsoft\<имя_пакета_дополнительных_компонентов_Visual_Studio>\1.0

    Если установлен пакет дополнительных компонентов Visual Studio 2010 Feature Pack 2:

    Копируйте файл Microsoft.VisualStudio.Progression.NativeProvider.targets из следующего местоположения установки пакета дополнительных компонентов:

    …\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\<имя_пакета_дополнительных_компонентов_Visual_Studio>\<номер_версии_пакета_дополнительных_компонентов_Visual_Studio>

    в следующее местоположение на сервере:

    …\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft\Modeling\<имя_пакета_дополнительных_компонентов_Visual_Studio>\1.0

  3. Копируйте файл Microsoft.VisualStudio.Progression.NativeProvider.dll из одного из следующих местоположений установки пакета дополнительных компонентов в зависимости от версии установленного пакета дополнительных компонентов:

    • Пакет дополнительных компонентов визуализации и моделирования Visual Studio 2010: %LocalAppData%\Microsoft\VisualStudio\10.0\Extensions\Microsoft\<имя_пакета_дополнительных_компонентов_Visual_Studio>\1.0

    • Пакет дополнительных компонентов 2 Visual Studio 2010: …\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\<имя_пакета_дополнительных_компонентов_Visual_Studio>\<номер_версии_пакета_дополнительных_компонентов_Visual_Studio>

    в следующее местоположение на сервере:

    …\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\Providers

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

Если сохранить только схему слоев (не сохраняя проект моделирования) и закрыть решение, необходимо будет добавить ссылки проекта С или С++ и импортировать пользовательские TARGETS-файлы в проект моделирования вручную, выполнив следующие действия:

Операция

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

Добавление ссылок проекта C или С++

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

    - или -

    В проекте моделирования щелкните правой кнопкой мыши папку Ссылки слоя и выберите команду Добавить ссылку.

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

    Ссылки проекта отображаются в папке Ссылки слоя.

Импорт пользовательского TARGETS-файла

  1. В окне Обозреватель решений щелкните правой кнопкой мыши узел проекта моделирования и выберите Отменить загрузку проекта.

  2. Щелкните правой кнопкой мыши узел проекта моделирования и выберите Изменить имя_проекта_моделирования.modelproj.

  3. В файле имя_проекта_моделирования.modelproj найдите следующий элемент <Import>:

    <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\ArchitectureTools\Microsoft.VisualStudio.TeamArchitect.ModelingProject.targets" />

    Добавьте в этот элемент <Import> следующий элемент <Import>:

    Если установлен пакет дополнительных компонентов визуализации и моделирования Visual Studio 2010:

    <Import Project="$(LocalAppData)\Microsoft\VisualStudio\10.0\Extensions\Microsoft\<InsertVisualStudioFeaturePackName>\1.0\Microsoft.VisualStudio.Progression.NativeProvider.targets" />

    ПримечаниеПримечание
    Обычно параметру %LocalAppData% соответствует путь имя_диска:\Users\имя_пользователя\AppData\Local.В Windows XP или Windows 2003 вместо %LocalAppData% следует использовать переменную %AppData%.Если пакет дополнительных компонентов установлен в другом местоположении, используйте это местоположение.Кроме того, можно копировать файл Microsoft.VisualStudio.Progression.NativeProvider.targets из местоположения установки пакета дополнительных компонентов в папку, содержащую проект моделирования.

    Если установлен пакет дополнительных компонентов Visual Studio 2010 Feature Pack 2:

    <Import Project="…$\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\<InsertVisualStudioFeaturePackName>\<InsertVisualStudioFeaturePackVersionNumber>\Microsoft.VisualStudio.Progression.NativeProvider.targets" />

  4. Сохраните и закройте MODELPROJ-файл.

  5. Щелкните правой кнопкой мыши узел проекта моделирования и выберите команду Перезагрузить проект.

При создании схемы слоев из кода C или C++ в Visual Studio 2010 Ultimate в операционной системе Windows XP или Windows 2003 абсолютный путь используется для создания записи в файле проекта моделирования (MODELPROJ-файле) и импорта пользовательского файла Microsoft.VisualStudio.Progression.NativeProvider.targets. В связи с этим при попытке открыть решение в Windows 7, Windows Vista или Windows Server 2008 могут возникнуть проблемы. Если Visual Studio 2010 Ultimate выполняется в операционной системе Windows XP или Windows 2003, открыть схемы слоев, созданные в Visual Studio 2010 Ultimate в операционной системе Windows 7, Windows Vista или Windows Server 2008, невозможно.

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

  1. Копируйте файл Microsoft.VisualStudio.Progression.NativeProvider.targets из следующего местоположения в папку, содержащую проект моделирования:

    Если установлен пакет дополнительных компонентов визуализации и моделирования Visual Studio 2010:

    %LocalAppData%\Microsoft\VisualStudio\10.0\Extensions\Microsoft\<имя_пакета_дополнительных_компонентов_Visual_Studio>\1.0

    Совет

    За исключением случаев установки пакета дополнительных компонентов в другом местоположении %LocalAppData% — имя_диска:\Users\имя_пользователя\AppData\Local.В Windows XP или Windows 2003 вместо %LocalAppData% следует использовать переменную %AppData%.

    Если установлен пакет дополнительных компонентов Visual Studio 2010 Feature Pack 2:

    …\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\<имя_пакета_дополнительных_компонентов_Visual_Studio>\<номер_версии_пакета_дополнительных_компонентов_Visual_Studio>

  2. В MODELPROJ-файле обновите элемент <Import> для TARGETS-файла, заменив абсолютный путь относительным путем TARGETS-файла. Примеры.

    <Import Project="Microsoft.VisualStudio.Progression.NativeProvider.targets" />
    

    Важно!

    Если используется управление версиями, необходимо выполнить возврат TARGETS-файла в систему управления версиями.

- или -

  1. Создайте новую переменную среды, представляющую путь установки файла Microsoft.VisualStudio.Progression.NativeProvider.dll.

  2. Воспользуйтесь этой переменной для импорта TARGETS-файла.

    Например, можно создать переменную среды NativeProviderTargetPath, указывающую на местоположение TARGETS-файла. После этого можно обновить элемент <Import> следующим образом:

    <Import Project="$(NativeProviderTargetPath)\Microsoft.VisualStudio.Progression.NativeProvider.targets" />
    

    Важно!

    Убедитесь в правильном задании переменной среды в разных операционных системах.

См. также

Задачи

Практическое руководство. Создание схем слоев из артефактов

Практическое руководство. Проверка кода .NET по схеме слоев

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

Схемы слоев: рекомендации

Журнал изменений

Дата

Журнал

Причина

Декабрь 2010

Обновлено с учетом пакета дополнительных компонентов Visual Studio 2010 Feature Pack 2.

Улучшение информации.