Опубликован: 25.03.2010 | Уровень: специалист | Доступ: платный
Дополнительный материал 4:

Практикум

Как структурировать папки управления исходным кодом в Visual Studio Team Foundation Server

Область применения

  • Microsoft® Visual Studio® 2005 Team Foundation Server (TFS) .
  • Microsoft Visual Studio Team System (VSTS) .

Описание

В этой статье подробно разбирается процесс организации структуры каталогов TFS. Эти рекомендации основаны на практическом опыте как Microsoft, так и пользователей продуктов корпорации. Представленная здесь структура является лишь ориентиром, гораздо важнее понять, на каких основаниях она построена. Разберитесь с этими основаниями и используйте их при формировании собственной структуры и выработке соглашения о наименовании папок в вашем сценарии.

Содержание

  • Задачи.
  • Обзор.
  • Порядок операций.
  • Шаг 1 - создание сопоставления рабочей области.
  • Шаг 2 - создание папки Main.
  • Шаг 3 - создание папок для артефактов проекта.
  • Шаг 4 - добавление решения в дерево исходного кода.
  • Шаг 5 - создание папки Development для изоляции разработки (при необходимости).
  • Шаг 6 - создание папки Releases для изоляции выпущенных сборок (при необходимости).
  • Дополнительные рекомендации.
  • Дополнительные ресурсы.

Задачи

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

Обзор

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

  • Main Главная корневая папка, выполняющая роль контейнера для основного дерева исходного кода, а также для артефактов проекта, например, проектной документации, сценариев и тестирования. Также в папке Main располагаются файлы Visual Studio Solution (.sln) .
  • Development Необязательная папка корневого уровня, которая может использоваться для изоляции разработки компонентов или работы отдельных команд. Она создается как ветвь папки Main.
  • Releases Необязательная папка корневого уровня для предыдущих сборок, которые необходимо изолировать от основной разработки, например, чтобы обслуживать выпущенную версию.

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

{
/Main	->Может содержать файлы решений (.sln),
охватывающих несколько проектов
/Source
/MyApp1	^Содержит файл MyApp1.sln
/Source	^Содержит папку для всего исходного кода
/ClassLibrary1 ^Содержит ClassLibrary1.csproj
/MyApp1Web	^Содержит Default.aspx
/Build	^Содержит результат сборки (двоичные файлы)
/Docs	^Содержит документацию по продукту и пр.
/Tests	^Содержит тесты
/Development
/FeatureBranch1
/Source /MyApp1 /Source
/MyApp1Web /ClassLibrary1 /FeatureBranch2
/Releases
/Release1 /Source /MyApp1 /Source
/MyApp1Web /ClassLibrary1 /Release 1.1 /Release 1.2 }

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

Порядок операций

  • Шаг 1 - создание сопоставления рабочей области.
  • Шаг 2 - создание папки Main.
  • Шаг 3 - создание папок для артефактов проекта.
  • Шаг 4 - добавление решения в дерево исходного кода.
  • Шаг 5 - создание папки Development для изоляции разработки (при необходимости).
  • Шаг 6 - создание папки Releases для изоляции выпущенных сборок (при необходимости).

Шаг 1 - создание сопоставления рабочей области

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

Сопоставление рабочей области можно создать двумя способами: явно или выполнив для командного проекта операцию Get.

Явное создание сопоставления рабочей области
  1. В меню File Visual Studio выберите Source Control и щелкните Workspaces.
  2. В диалоговом окне Manage Workspaces выберите имя своего компьютера и щелкните Edit.
  3. В диалоговом окне Edit Workspace в списке Working folders щелкните Click here to enter a new working folder.
  4. Щелкните многоточие, выберите свой командный проект (например, MyTeamProject1 ) и щелкните OK.
  5. Щелкните ячейку локальной папки, чтобы появилась еще одна кнопка с многоточием.
  6. Щелкните многоточие под Local Folder и выберите локальную папку на своем компьютере, в которой вы хотите разместить свой командный проект, например, C:\DevProjects\MyTeamProject1.
  7. Дважды щелкните OK, чтобы закрыть диалоговое окно Edit Workspace.
  8. Щелкните OK в ответ на сообщение Microsoft Visual Studio с информацией об изменении одной или нескольких рабочих папок.
  9. Щелкните Close, чтобы закрыть диалоговое окно Manage Workspaces.
Выполнение операции Get для командного проекта
  1. В Team Explorer разверните узел своего командного проекта, например, MyTeamProject1.
  2. Щелкните дважды Source Control под командным проектом.
  3. В Source Control Explorer щелкните правой кнопкой корневую папку MyTeamProject1 и выберите команду Get Latest Version.
  4. В диалоговом окне Browse For Folder выберите локальный путь (например, C:\DevProjects\MyTeamProject1 ) и щелкните OK. Корневая папка командного проекта с TFS сопоставлена с локальным каталогом на вашем компьютере.

Шаг 2 - создание папки Main

Теперь создадим в системе управления исходным кодом новую корневую папку Main для вашего командного проекта. Она используется как корневой контейнер для исходного кода и других артефактов проекта. В ней также могут располагаться файлы решений Visual Studio (.sln) , охватывающих несколько проектов. Папки решений также хранятся в папках соответствующих приложений, располагающихся на более низком уровне структуры дерева. Чтобы создать папку Main, выполните следующие действия:

  1. 1. В Team Explorer разверните свой командный проект и дважды щелкните Source Control.
  2. В Source Control Explorer выберите корневую папку командного проекта.
  3. Щелкните правой кнопкой мыши правую панель и выберите New Folder.
  4. Введите Main и нажмите Enter.

Шаг 3 - создание папок для артефактов проекта

Далее в папке Main создаются папки для размещения дерева исходного кода и сопутствующих артефактов, например, сборок, документации, файлов сценариев и тестов:

{ /Main
/Build
/Docs
/Source
/Tests }

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

  1. Разверните командный проект и в левой панели Source Control Explorer выберите папку Main.
  2. Щелкните правой кнопкой правую панель, щелкните New Folder, введите Build и нажмите Enter.
  3. Повторите шаг 2, чтобы создать остальные подпапки папки Main.

Шаг 4 - добавление решения в дерево исходного кода

Теперь добавим в дерево исходного кода TFS решение Visual Studio (.sln) , проект ( .vsproj, .vbproj ) и исходные файлы.

Поскольку на шаге 1 вы сопоставили корневой узел с папкой C:\ DevProjects\MyTeamProject1, убедитесь, что структуры папок на клиенте и на сервере синхронизированы. Файл решения (.sln) должен находиться в папке C:\DevProjects\MyTeamProject1\Main\Source\MyApp1. Связанные с проектом файлы компонентов MyApp1Web и ClassLibrary1 должны располагаться в папке C:\DevProjects\MyTeamProject1\Main\Source\MyApp1\ Source.

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

  1. Откройте решение в Visual Studio.
  2. В Solution Explorer щелкните решение правой кнопкой и выберите Add Solution to Source Control. Поскольку сопоставление рабочей области уже было создано на шаге 1, теперь в систему добавляется решение.
  3. Убедитесь, что значение параметра Local Workspace выбрано правильно. Это должна быть та же рабочая область, что использовалась при создании структуры каталогов в системе управления исходным кодом TFS.
  4. Щелкните OK, чтобы добавить решение в систему управления исходным кодом.

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

{
/Main /Source /MyApp1 /Source
/MyApp1Web /ClassLibrary1 /Build /Docs /Tests }

Дополнительную информацию о настройке структуры каталогов на стороне клиента вы найдете в статьях "Как структурировать приложения Windows в Visual Studio Team Foundation Server " и "Как структурировать приложения ASP.NET в Visual Studio Team Foundation Server ".

Структура каталогов при наличии в проекте модульных тестов

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

{
/Main /Source /MyApp1 /Source
/MyApp1Web /ClassLibrary1 /UnitTests /Build /Docs /Tests }

Шаг 5 - создание папки Development для изоляции разработки (при необходимости)

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

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

  1. Создайте корневую папку Development (на одном уровне с Main ).
  2. Создайте подпапку FeatureBranch1.
  3. Щелкните папку $/TeamProject/Main/Source правой кнопкой и выберите команду Branch.

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

  4. В диалоговом окне Branch щелкните Browse, выберите MyTeamProject/ Development/FeatureBranch1 и щелкните OK.
  5. Щелкните OK, чтобы создать ветвь.
  6. Возвратите изменения на сервер.

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

{ /Development
/FeatureBranch1 /Source /MyApp1 /Source
/MyApp1Web /ClassLibrary1 /FeatureBranch2
/Main /Source /MyApp1 /Source
/MyApp1Web /ClassLibrary1 /Build /Docs /Source /Tests }

Шаг 6 - создание папки Releases для изоляции выпущенных сборок (при необходимости)

Если параллельно с основной разработкой требуется обслуживать ранее выпущенные версии, изолируйте работы по обслуживанию, создав папку Releases. В ней можно создавать подпапки для каждой выпущенной версии. Чтобы создать ветвь Releases, выполните следующие действия:

  1. Создайте корневую папку Releases (на одном уровне с папками Main и Development ).
  2. Создайте подпапку Release1.
  3. Щелкните папку $/TeamProject/Development/Source правой кнопкой и выберите Branch.

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

  4. В диалоговом окне Branch щелкните Browse, выберите $/TeamProject/ Maintenance/Release1 и щелкните OK.
  5. В разделе Branch from version в списке By щелкните Label и введите имя метки в одноименное поле. Чтобы выбрать метку, щелкните кнопку с многоточием рядом с полем Label.
  6. Щелкните OK, чтобы создать ветвь.

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

{
/Main /Source /MyApp1 /Source
/MyApp1Web /ClassLibrary1 /Build /Docs /Source /Tests
/Releases
/Release1 /Source /MyApp1 /Source
/MyApp1Web
/ClassLibrary1 /Release 1.1 /Release 1.2 }

Дополнительные рекомендации

При создании структуры каталогов в TFS учитывайте следующие рекомендации:

  • Ветвление следует выполнять только в случае необходимости. Выпускаемые версии можно пометить метками и создать для них ветви позже, когда возникает реальная потребность в их изоляции.
  • Рассмотренная выше структура каталогов идеально подходит для сценариев, в которых проект состоит из одного файла решения Visual Studio (.sln) , содержащего все файлы проекта. При таком сценарии в папке Main размещается файл .sln и подпапки для каждого файла проекта (.vsproj, .vbproj) . В нашем примере папками проектов являются MyApp1, MyApp2 и т. д. Такой подход может также использоваться и при наличии одного файла проекта, в частности, если имеется только файл проекта без файла решения.
  • В сценариях с несколькими решениями файлы .sln могут размещаться в папке Main.

Дополнительные ресурсы

Илья Макаренко
Илья Макаренко

Добрый день.

Вопрос №1

Какова стоимость получения диплома о мини-МБА по данному курсу? Или ориентироваться на указанную на сайте?

Вопрос №2

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

Александр Медов
Александр Медов

Здравствуйте, какова полная сумма предоставленной услуги с печатью документа и отправкой по почте?

Елена Ходакова
Елена Ходакова
Россия
Игорь Шубин
Игорь Шубин
Россия, Москва, НОУ МФПУ