Я думаю, что у вас может быть проблема с управлением конфигурацией - по крайней мере, столько же, сколько у вас проблема с "совместимостью".
Я бы порекомендовал вам найти способ отследить, какие версии каких сборок использует каждый из ваших клиентов, чтобы (1) вы знали, что они используют, когда решаете, что отправлять, и (2) когда они сообщают ошибки, вы можете повторить их настройки (и, следовательно, повторить их ошибку). Если это звучит как много работы, это так. Вот почему многие магазины по разработке программного обеспечения предпринимают шаги, чтобы обеспечить ограничение различий в настройках среди клиентов. Почти наверняка у вас останутся некоторые отличия от клиента к клиенту, но все, что вы можете сделать для решения этой проблемы, будет полезным.
Помимо последствий для процесса, если вам действительно нужно создать «подключаемую» среду, вам, вероятно, нужно создать некоторые интерфейсы для ваших объектов, чтобы контролировать точки их соединения, и вам, вероятно, следует взглянуть на Managed * от Microsoft 1006 * Расширяемость Каркас (MEF). MEF может помочь вам управлять тем, как объекты «требуют» поведения от других объектов.