Добрый день. Вопрос №1 Какова стоимость получения диплома о мини-МБА по данному курсу? Или ориентироваться на указанную на сайте? Вопрос №2 Возможно ли начать обучение без потери результатов, не отправив документы на зачисление, а отправку выполнить позже? |
Структуризация проектов и решений для управления исходным кодом в Team Foundation
Обзор
Многие стандартные соглашения о папках Visual Studio, используемые при создании новых решений и проектов, не оптимальны для командной разработки и использования с системой управления исходным кодом TFS. Создавая новые проекты и решения Visual Studio, не спешите принять умолчания. Продумайте собственную локальную и серверную структуру папок.
В этой лекции объясняется, как следует структурировать решения и проекты на компьютере разработчика (на клиентской стороне) и как структурировать папки в системе управления исходным кодом TFS (на серверной стороне).
Приведены примеры структур папок для приложений различных типов, включая Microsoft Windows Forms, Smart Client и веб-приложения. В лекции также рассказывается, как использовать рабочие области для управления сопоставлениями между клиентскими и серверными структурами папок.
Структура на стороне сервера
Большинство командных проектов содержат одно или несколько решений Visual Studio, каждое из которых содержит один или несколько проектов Visual Studio. Если для поддержки конкретных вариантов разработки вам необходимо ветвление, используйте для объединения проектов Visual Studio как на клиенте, так и на сервере корневую папку Main. Далее приведен пример структуры папок в системе управления исходным кодом TFS:
{ $MyTeamProject1 Может содержать файлы решения (.sln) /Main Файл MyApp1.sln /Source Папка для всего исходного кода /MyApp1 Файл ClassLibrary1.csproj /Source Файл Default.aspx /ClassLibrary1 Основная папка для модульных тестов /MyApp1Web /UnitTests /ClassLibrary1Tests Проект и код для тестирования /MyApp1WebTests Проект и код для тестирования /SharedBinaries Общие ресурсы, например, библиотеки /SharedSource Общий исходный код /Docs Документация продукта /Tests Общая папка тестирования /FunctionalTests Создаются автоматически Team Build /PerformanceTests /SecurityTests /TeamBuildTypes /BuildType1 /BuildType2 }
Папка Main служит для хранения файлов исходного кода и других связанных с ним компонентов, например, результатов сборки, проектной документации и данных тестирования. Папка приложения ( MyApp в предыдущем примере) содержит файл решения Visual Studio (.sln) , используемый для группирования связанных проектов Visual Studio. Каждый файл проекта ( .vcproj или .vbproj ) содержится в специальной подпапке проекта, расположенной в папке /Main/Source/MyApp1/Source. Модульные тесты, сопровождающие каждый проект, находятся в папке UnitTests. Вы можете поместить в папку Main дополнительные файлы решений (.sln) Visual Studio, чтобы получить возможность работать с другими вариантами группирования проектов.
Папки Docs и Test используются для размещения дополнительных артефактов, связанных с командным проектом, включая документацию продукта и автоматические тесты.
Папка TeamBuildTypes создается автоматически, когда вы впервые генерируете сборку Team Build. Если вы хотите зарегистрировать тип командной сборки вручную, создайте эту папку самостоятельно, добавьте в нее файлы Team Build, и TFS автоматически распознает эту папку.
Подробнее о группировании проектов и структуре решений - в лекции 3.
Хранение модульных тестов
Вы можете хранить модульные тесты в папке UnitTests, расположенной на одном уровне с папкой Source, как показано ниже.
{ … /MyApp1 Файл MyApp1.sln /Source Папка для всего исходного кода /ClassLibrary1 Файл ClassLibrary1.csproj /MyApp1Web Файл Default.aspx /UnitTests Основная папка для модульных тестов /ClassLibrary1Tests Проект и код для тестирования /MyApp1WebTests Проект и код для тестирования }
Этот вариант предполагает, что модульные тесты играют важную роль. Однако это происходит в ущерб совместимости ветвей на уровне проекта. Ниже приведена альтернативная структура:
{ /MyApp1 /Source /ClassLibrary1 /ClassLibrary1Tests /MyApp1Web /MyApp1WebTests }
Ниже приводятся доводы "за" и "против" каждого варианта.
Папка UnitTests на одном уровне с папкой Source
- За - все модульные тесты находятся в одном месте.
- За - переносимый код отделен от непереносимого.
- За - в процессе сборки можно легко запустить модульные тесты всех проектов.
- Против - разработчикам сложнее запускать модульные тесты только для своих проектов.
- Против - модульные тесты не будут включаться в ветвление исходного кода.
Своя папка UnitTests в каждом проекте
- За - разработчики могут легко запускать модульные тесты для конкретного проекта.
- За - при ветвлении модульные тесты будут включены в разветвленные папки, то есть, останутся связанными с исходным кодом в каждой ветви.
- Против - в папке исходного кода смешиваются рабочий и тестовый коды.
- Против - как правило, во время сборки сложнее становится одновременно запустить все модульные тесты всех проектов.
Хранение документации
Папка Documentation предназначена для документации проекта. Решая, что хранить в системе управления исходным кодом и что хранить в библиотеке документов портала проекта Microsoft Windows SharePoint®, примите во внимание следующие соображения:
- Используйте SharePoint для внутренних документов команды - сценариев использования, требований, плановой и проектной документации.
- Используйте систему управления исходным кодом TFS для документации, поставляющейся заказчику, - руководств по установке и развертыванию, руководства пользователя, файлов справки.
Большинство документов представляют собой двоичные файлы, поэтому подумайте об использовании блокировки для предотвращения ручных слияний. Установив блокировку, вы будете получать уведомления о том, что файл открыт, и избежите ручного слияния.
Будьте осторожны при использовании SharePoint и внимательно следите за версиями документов. В SharePoint гораздо проще перезаписать изменения по сравнению с системой управления исходным кодом TFS, поскольку по умолчанию в SharePoint включена перезапись существующих файлов при их выгрузке.
Структура на стороне клиента
Структура локальных папок на рабочих станциях разработчиков должна повторять структуру папок на сервере. Чтобы правильно организовать все компоненты на рабочих станциях, разместите исходный код всех командных проектов в одной корневой папке, например, C:\DevProjects. Создайте в ней одну вложенную папку для каждого командного проекта, как показано в следующем примере:
{ C:\DevProjects Корневая папка для всех командных проектов \MyTeamProject1 Папка проекта TeamProject1 \MyTeamProject2 Папка проекта TeamProject2 }
В каждой папке командного проекта разместите копию структуры папок приложения на сервере управления исходным кодом, как показано в следующем примере:
{ \MyTeamProject1 Папка проекта TeamProject1 \Main Содержит файлы .sln с проектами \Source \MyApp 1 Файл MyApp1.sln \Source \ClassLibrary1 Файл ClassLibrary1.csproj \MyApp1Web Файл Default.aspx \UnitTests Проекты и исходный код для модульного тестирования \ClassLibrary1Tests \MyWinApp1Tests \SharedBinaries Общие ресурсы, например, библиотеки \SharedSource Общий исходный код \Docs Документация проекта \Tests Общая папка для тестирования \FunctionalTests \PerformanceTests \SecurityTests }
Примечание Структура на стороне клиента автоматически отражает структуру на сервере, если вы при помощи рабочей области сопоставляете корневую папку приложения с локальным компьютером. Однако в крупных проектах это может привести к увеличению времени загрузки рабочей области. Чтобы оптимизировать работу в крупных проектах, создавайте сопоставления рабочей области ниже уровня корневой папки для извлечения только файлов, требуемых для разработки.