Мои проекты огромны.
Мы разделяем каждый «модуль» на разные сборки, создавая библиотеки классов.Примерно так:
Client.ProjectName (Solution)
Client (Class Library)
- SectionHandler...
- ComponentModels...
- Utilities...
Client.Web (Class Library)
- Handelrs
- Extenders
Client.Net (Class Library)
- MailQueue
Client.Blog.WebControls.UI (Class Library)
- TopContent.ascx
- PostsList.ascx
Client.News.WebControls.UI (Class Library)
- TopContent.ascx
- PostsList.ascx
Client.Website
Каждый Class Library
- это проект в рамках решения Client.ProjectName
или в рамках другого общего решения.
Файловая система выглядит следующим образом:
Client
|- Framework
|- Client
|- files...
|- Client.Web
|- files...
|- Client.Net
|- files...
|- SolutionName
|- Client.Blog.WebControls.UI
|- Client.News.WebControls.UI
|- Website
Совместно используемые клиентские библиотеки сразу попадают в папку Client\Framework
, она предназначена для использования во всех проектах для этого клиента.Конкретные проекты идут под решение.У нас также есть папка Company
, в которой мы храним проекты, которые можно использовать в любом другом проекте для любого клиента, это похоже на структуру компании.
Решения, которые мы используем:
- Один для структуры компании
- Один для структуры клиента
- Один для каждого решения клиента
Один и тот же проект может быть использован в нескольких решениях, поэтому выне обязательно создавать все эти решения.
С этим форматом мы могли бы использовать множество вещей в других проектах, просто ссылаясь на DLL.Без этой структуры некоторые проекты были бы невозможны в данное время.