Проектирую решение, которое не будет распространятся среди других пользователей/разработчиков и используется только мной для решения практических задач. Используемая инфраструктура очень многообразна: БД, много чужих библиотек, работа на разных компьютерах по сети. Хотелось бы иметь весь код в одном решении, при этом иметь возможность создавать различные сборки с различным набором функционала. При этом необходимо периодическое обновление всех работающих сборок.
Вижу два пути:
1) Один проект (в нём папки, группирующие файлы классов) + возможности git. В основной ветке — все классы, с последними правками. В дополнительных ветках — минимально необходимые наборы классов для конкретной сборки. После обновлений в основной ветке, соответствующие файлы коммитятся в дополнительные ветки, чтобы потом создать обновлённые версии сборок.
Честно говоря, не уверен, удобен ли git для таких манипуляций и вообще, возможно ли это. Знакомиться с контролем версий только начинаю.
2) Много проектов, группирующих классы. Ссылки между проектами. Все библиотеки — плагины. Запускаемый проект умеет загружать плагины, лежащие рядом, генерировать интерфейс, обеспечивать функционал. При обновлениях просто подменяется библиотека.
Этот способ используется сейчас. Вижу много минусов: сложность кода запускаемого проекта, корявость интерфеса, сложность доступа к экземплярам из других плагинов через коллекции запускаемого проекта, сложности с зависимостями проектов.
Помогите с выбором: продолжать использовать 2ой способ или переходить на 1ый. Может я вообще неправильно мыслю, какие есть техники?