Я предполагаю, что у вас есть «базовая» сборка, которая содержит много общих служб и на которую ссылаются все ваши другие проекты. Он может иметь реестр StructureMap, который настраивает свои собственные службы и общие значения конфигурации. Это должно побить большинство проблем с дублированием.
Каждая дополнительная сборка, которая предоставляет новые службы, будет иметь свой собственный реестр, который настраивает свои собственные службы.
Каждое приложение будет иметь свой собственный загрузчик, который конфигурирует контейнер с различными регистрами, которые он хочет загружать, а также переопределяет любую регистрацию службы, специфичную для этого приложения. Это обеспечивает изменчивость для приложения.
У вас будет дублирование, так как у каждого приложения есть свой загрузчик. Но большая часть работы должна быть делегирована различным реестрам. Если вы думаете о загрузчике как о файле конфигурации, дублирование должно быть более приятным.