Нет, определенно нет одного проекта для каждого клиента, вы можете иметь одно решение для каждого клиента, в котором вы объединяете все проекты с учетом потребностей в настройке.
Просто чтобы дать вам альтернативу архитектуре плагинов, которая является верным путем, но также обычно довольно сложной.
Option1.
Внесение общей функциональности в основной проект (Core)
Дополнительные вещи, такие как календарь, помещенные в отдельные проекты DLL (по одному на функциональность)
Создание VS SOLUTIONS, где вы объединяете все проекты для конкретной настройки + Core. Таким образом, customer1 будет иметь Customer1Silution с Core и все дополнительные проекты, в которых он нуждается, customer2 - свое решение с Core и дополнительные компоненты.
Option2.
Имеется одна большая настройка для каждой из них, и в зависимости от конфигурации / лицензии разрешается / запрещается доступ пользователя к дополнительным функциям.
Зависит от ваших ресурсов, таких как время, опыт, люди, с которыми вы работаете, клиенты, вы можете выбрать более подходящий вам вариант.
1 плагин на основе: может быть лучшим, но сложным, и вам понадобится время, чтобы познакомиться с ним, если вы никогда не делали что-то похожее.
Вариант 1 простой и быстрый, но если количество клиентов и конфигурация откладываются, вы столкнетесь с проблемами масштаба.
Вариант 2 - это среднее значение между этими двумя значениями, но следите за настройкой параметров.
Учитывая тот факт, что вы ссылаетесь на проекты и не относитесь к своим библиотекам в своих решениях, если вы решите проблему в Core в одном решении, это повлияет и на все другие решения.