У нас много проблем с организацией наших решений. У нас есть несколько приложений. Это похожие приложения, поэтому много повторного использования. Различные приложения включают разные возможности в зависимости от того, за что заплатят наши разные клиенты.
Итак, как нам организовать вещи? MSDN говорит организовать следующим образом:
SolutionFolder\
Proj1Folder\
Proj2Folder\
Proj3Folder\ ...
(Примечание. Под папкой решения я подразумеваю фактическую папку в системе, а не папку решения Visual Studio.)
Но не сообщается никаких подробностей относительно нескольких решений, которые повторно используют проекты. Не имеет смысла создавать вторую папку решения и ссылочные проекты в первой папке решения. Моя первая мысль - полностью изолировать решения, а затем ссылаться на проекты по мере необходимости. Имеет ли это смысл? Смотрите ниже:
Solutions\
Solution1.sln
Solution2.sln
Solution3.sln
Projects\
AFeatures\
AProject1\
AProject2\
AProject3\
BFeatures\
BProject1\
BProject2\
CFeatures\
CProject1\
CProject2\
В приведенном выше примере я сгруппировал проекты на основе определенных функций. Solution1 может включать в себя функции A и C, Solution2 может включать в себя функции B и C, а Solution3 может включать в себя A и B. Вещи усложняются, потому что каждая функция может иметь подфункции, которые будут не во всех решениях. Другими словами, могут быть общие AFeatures, но затем более специфичные A-1Features, A-2Features и т. Д.
Кроме того, мы также хотели бы сгруппировать наши проекты на основе n-уровневой архитектуры. Итак, я полагаю, что мы бы добавили также папки BusinessServices, DataServices и UserServices. Но имеет ли смысл размещать папку n-уровня выше или ниже структуры функций? Здесь мой мозг начинает вращаться.
На аналогичной ноте мы хотели бы иметь наши интерфейсы в разных проектах, которые реализуются. Это может быть не так уж важно. Я предполагаю, что у нас будут AInterfacesProject1 и AProject на одном уровне каталогов, поэтому они близко друг к другу.
Буду признателен за комментарии к моим примерам. И если бы у вас был опыт решения моей той же проблемы, мне было бы интересно узнать, как вы ее организовали.