Наша команда изучает использование Team Foundation Server v.11 (2012) для управления нашими проектами. В настоящее время мы осуществляем управление проектами в распространенных листах. Наша команда разрабатывает программное обеспечение только для внутренних клиентов, и существует много обмена DLL между проектами. Мы также используем SVN для контроля версий исходного кода.Проект TFS с несколькими решениями Visual Studio
У нас есть решения для различных частей наших приложений: общая библиотека, библиотеки приложений (бизнес-правила и т. Д.), Веб-сайт интрасети, интернет-сайт, 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 заключается в том, что один 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? Есть ли другой способ организовать нашу структуру кода, которая будет иметь больше смысла? Любые статьи или веб-сайты, которые приведут нас в правильном направлении, очень помогут.
Как бы вы обрабатывали монтажные версии. Наша стратегия состоит в том, что для каждого решения имеется общий файл информации об ассамблее, поэтому у OurCompanyLibrary будет другая версия, чем CommonLibrary и так далее. У вас будет только одна версия сборки для всего проекта команды? Я понимаю, что у вас могут быть разные номера версий, но это лучший способ сделать это или лучший способ иметь один номер версии для всего командного проекта? – awilinsk
Если ваш конечный продукт является монолитным, то все сборки могут использовать один и тот же номер версии, и этот номер будет использоваться для различения двух разных версий вашего продукта. Теперь предположим, что вы разрабатываете два продукта (например, два несвязанных веб-сайта) на основе одного и того же компонента (основные/бизнес-сборки компании), сборка версий имеет здесь другое значение, поскольку на двух веб-сайтах может использоваться другая версия основных/бизнес-сборок и у вас может быть разный цикл разработки для трех из них (основной/бизнес, сайт 1, сайт2). Если все монолитно, не беспокойтесь. – Nock
Спасибо за совет. Это не монолитно. У нас есть два разных публичных веб-сайта, которые не используют одни и те же бизнес-сборки, но интрасеть использует те же бизнес-сборки, что и общедоступные веб-сайты.Я думаю, что у меня будут разные версии для каждого из веб-сайтов и библиотек. Как бы вы отделили эту штуку? Будет ли у меня ветка Main и Dev, как обычно, а затем ветка Release для каждого из разных сайтов? – awilinsk