Наша команда рассматривает возможность использования Team Foundation Server v.11 (2012) для управления нашими проектами. В настоящее время мы осуществляем управление проектами в распространенных листах. Наша команда разрабатывает программное обеспечение только для внутренних клиентов, и существует много обмена DLL между проектами. Мы также используем SVN для контроля версий исходного кода.
У нас есть решения для разных частей наших приложений: общая библиотека, библиотеки приложений (бизнес-правила и т.д.), веб-сайт Intranet, интернет-сайт, 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)
Причина разделения кода на несколько решений заключается в том, что мы можем повторно использовать библиотеки приложений в разных ситуациях (приложения Intranet, интернет-приложения, приложения Winform). Кроме того, интранет и интернет-решения содержат несколько приложений. Это наша нынешняя структура. Я не уверен, что это лучшая организационная структура, но она работает для нас.
Проблема с переключением на TFS заключается в том, что один Team Project не может иметь частей в нескольких решениях VS. Например, мы создали проект Team TFS для Application1, чтобы у нас могло быть отставание продукта для этого приложения. Application1 требует изменений в OurCompanyLibrary, OurCompanyIntranet и OurCompanyInternet для завершения приложения, но с использованием TFS будет только одно решение VS для Application1.
Вот пример того, как мы разрабатываем приложение. Вся модель домена и бизнес-правила, которые мы храним в решении OurCompanyLibrary VS. Когда мы разрабатываем приложение, называем его Application1, мы сначала начинаем создавать модель домена и бизнес-правила в проекте OurCompanyLibrary.Application1 VS в рамках решения OurCompanyLibrary VS. После разработки модели домена мы переходим к программированию интерфейса пользователя в решениях OurCompanyIntranet и OurCompanyInternet VS Solutions. Эти решения являются веб-сайтом в стиле MVC. OurCompanyIntranet содержит VS Web Project OurCompanyIntranet.UI, который содержит все представления (файлы .aspx), css, javasciprt и т.д. OurCompanyIntranet также содержит все модели и контроллеры, разделенные приложением (в данном случае - OurCompanyIntranet.Application1). Организация этого в TFS становится проблемой, потому что нам нужен Team Project для Application1, но это приложение может охватывать несколько решений, и мы не хотим дублировать код везде, добавляя те же решения OurCompanyIntranet и OurCompanyInternet VS к исходному контролю.
Как бы вы организовали это в TFS? Есть ли другой способ организовать нашу структуру кода, которая будет иметь больше смысла? Любые статьи или веб-сайты, которые приведут нас в правильном направлении, очень помогут.