Я обычно не думаю об этом и просто делаю "то, что чувствую правильно", но обычно я в конечном итоге использую имена, которые вполне соответствуют следующей стратегии.
Я буду использовать самое большое общее пространство имен в дереве для имени .dll, как вы, похоже, делаете;
с lib и lib.data это lib, поэтому dll называется lib. С lib.ecom и lib.ecom.paypal это lib.ecom, поэтому dll называется ecom.
В некоторых случаях вам нужно подумать о вещах немного больше, например, у нас есть следующие пространства имен (предупреждение, упрощенный пример) и мы хотим сгруппировать их в две DLL
myapp.view
myapp.presentation
myapp.model
myapp.dataaccess
мы не можем использовать myapp, потому что тогда у нас будет две сборки myapp. В этом случае я использую имя пространства имен, которое является наиболее подходящим. Первый может называться myapp.presentation, а второй myapp.model, если эти пространства имен являются наиболее важными.