Наша команда рассматривает возможность использования Team Foundation Server v.11 (2012) для управления нашими проектами. В настоящее время мы осуществляем управление проектами в электронных таблицах. Наша команда разрабатывает программное обеспечение только для внутренних клиентов, и между проектами существует много общих dll. Мы также используем SVN для контроля версий нашего исходного кода.
У нас есть решения для различных частей наших приложений: общая библиотека, библиотеки приложений (бизнес-правила и т. д.), веб-сайт в интранете, веб-сайт в Интернете, Windows Forms. Вот как выглядит наша структура SVN
SVN
-CommonLibrary (VS Solution)
-Source
-CommonLibrary.Core (VS Project)
-CommonLibrary.Security (VS Project)
-CommonLibrary.Web (VS Project)
-OurCompanyLibrary (VS Solution)
-Libraries (Projects within this solution reference these)
-CommonLibrary.Core.dll
-CommonLibrary.Security.dll
-Source
-OurCompanyLibrary.Application1 (VS Project)
-...
-OurCompanyLibrary.ApplicationN (VS Project)
-OurCompanyIntranet (VS Solution) (MVC framework)
-Libraries (Projects within this solution reference these)
-CommonLibrary.Core.dll
-CommonLibrary.Security.dll
-CommonLibrary.Web.dll
-OurCompanyLibrary.Application1.dll
-Source
-OurCompanyIntranet.Application1 (VS Class Library Project)
-...
-OurCompanyIntranet.ApplicationN (VS Class Library Project)
OurCompanyIntranet.UI (VS Web Project)
-OurCompanyInternet (VS Solution) (MVC framework)
-Libraries (Projects within this solution reference these)
-CommonLibrary.Core.dll
-CommonLibrary.Security.dll
-CommonLibrary.Web.dll
-OurCompanyLibrary.Application1.dll
-Source
-OurCompanyInternet.Application1 (VS Class Library Project)
-...
-OurCompanyInternet.ApplicationN (VS Class Library Project)
-OurCompanyInternet.UI (VS Web Project)
. Причина разделения кода на несколько решений заключается в том, что мы можем повторно использовать библиотеки приложений в различных ситуациях (приложения для интрасети, интернет-приложения, приложения Winform). Кроме того, интранет- и интернет-решения содержат несколько приложений. Это наша текущая структура.Я не уверен, что это лучшая организационная структура, но она работает для нас.
Проблема с переходом на TFS заключается в том, что один командный проект не может иметь части в нескольких решениях VS. Например, мы настроили бы командный проект TFS для Application1, чтобы у нас был список невыполненных работ по этому приложению. Application1 требует изменений в OurCompanyLibrary, OurCompanyIntranet и OurCompanyInternet для завершения приложения, но при использовании TFS будет только одно решение VS для Application1.
Вот пример того, как мы разрабатываем приложение. Все модели предметной области и бизнес-правила хранятся в решении OurCompanyLibrary VS. Когда мы разрабатываем приложение, назовем его Application1, мы сначала начинаем создавать модель предметной области и бизнес-правила в проекте OurCompanyLibrary.Application1 VS в составе OurCompanyLibrary VS Solution. После разработки модели предметной области мы переходим к программированию пользовательского интерфейса в решениях OurCompanyIntranet и OurCompanyInternet VS. Эти решения представляют собой веб-сайт в стиле MVC. OurCompanyIntranet содержит веб-проект VS OurCompanyIntranet.UI, который содержит все представления (файлы .aspx), css, javasciprt и т. д. OurCompanyIntranet также содержит все модели и контроллеры, разделенные по приложениям (в данном случае OurCompanyIntranet.Application1). Организация этого в TFS становится проблемой, потому что нам нужен Team Project для Application1, но это приложение может охватывать несколько решений, и мы не хотим везде дублировать код, добавляя одни и те же решения OurCompanyIntranet и OurCompanyInternet VS в систему управления версиями.
Как бы вы организовали это в TFS? Есть ли другой способ организации нашей структуры кода, который имел бы больше смысла? Любые статьи или веб-сайты, которые поведут нас в правильном направлении, очень помогут.