В моем отделе мы разрабатываем несколько небольших дополнений для какого-либо сервера унифицированных коммуникаций. Для управления версиями и распределенной разработки мы используем Team Foundation Server 2012.
Но есть только одно большое решение TFS для всех наших приложений и библиотек:
- Основное решение
- Приложения
- Приложение 1
- Приложение 2
- Приложение 3
- внешность
- Библиотеки
- Lib 1
- Lib 2
- инструменты
- Приложения
Путь «Приложение» содержит все основные приложения. Они не зависят друг от друга, но зависят от проектов Libraries и Externals.
Путь "Externals" содержит некоторые внешние библиотеки DLL, на которые есть ссылки в наших приложениях и библиотеках.
Путь к библиотекам содержит часто используемые библиотеки (шаблоны пользовательского интерфейса, классы помощников и т. Д.). Они не зависят друг от друга и упоминаются в проектах «Библиотеки» и «Инструменты».
Путь Tools содержит некоторые вспомогательные программы, такие как помощники по настройке, веб-службы обновления и т. Д.
Теперь есть несколько важных моментов, почему я хотел бы изменить эту структуру:
- Мы не можем использовать сборки сервера.
- Управлять скрамом TFS с помощью спринтов, препятствий и т. Д. С такой структурой решения неудобно.
- Каждый разработчик всегда имеет доступ ко всем проектам в решении.
- Полная сборка длится слишком долго, если случайно нажать [F6] в Visual Studio ...
Что бы вы изменили в этом решении? Как бы вы разбили эти проекты на более мелкие решения, как эти решения должны быть структурированы.
Мой первый подход заключается в создании одного проекта TFS для каждого приложения, библиотеки и инструмента. Но как я могу гарантировать, что, например, приложение 2 всегда содержит новейшую версию Lib 1? Нужно ли отслеживать изменения в Lib 1 и обновлять приложение 2 вручную, как только изменяется Lib? Или я могу как-то заставить Visual Studio всегда каким-либо образом использовать новейшую версию внешнего проекта?
Изменить: В TFS есть только одна коллекция командных проектов TFS, содержащая один командный проект TFS. Team Project содержит одно большое решение Visual Studio, которое содержит несколько папок, содержащих (см. Структуру выше), каждая из которых содержит несколько проектов VS.
Мой вопрос сейчас, как бы вы реорганизовать:
- Командные проекты TFS
- Проекты VS