Это распространенный, но хитрый вопрос. Лично мне не нравятся чрезмерно фрагментированные dll, так как это усложняет отслеживание и развертывание (IMO). Я предпочитаю ограниченное количество более длинных dll.
В дополнение к управлению проектами / dll это также уменьшает объем работы, выполняемой Fusion при загрузке.
Вы, очевидно, должны стремиться к повторно используемым компонентам, но просто не сходите с ума, делая их слишком гранулированные - рассмотрите, например, "System.Windows.Forms.dll"; там довольно много!
Вертикально, очевидные из них, которые следует разделять, - это проблемы пользовательского интерфейса / хранилища / логики; по горизонтали я склонен иметь один столбец dll на логическую область - но вы все равно можете разделить его на пространства имен , так что вам не нужно сохранять dll для просто одна вещь. 1013 *