Это не тот случай, когда вы можете управлять версиями в NSB, как они описывают в примере управления версиями.
Вы можете сделать это, если внедряете NSB в сценарии отправки / получения. В этом случае, несмотря на то, что контракт является DLL-библиотекой сообщений, нет необходимости делить одну и ту же версию DLL между отправителями и получателями. Это потому, что предоставление XML на проводе чисто десериализовано на приемном конце, все будет хорошо.
Однако в сценарии pub-sub это полностью нарушается. В этом случае существует зависимость от одной и той же версии сборки сообщений, которая используется совместно издателем и подписчиками. Это означает, что версия, токен открытого ключа и т. Д. Должны быть идентичными. Причиной этого является механизм подписки.
Когда ваш подписчик запускается, он отправляет сообщение подписки издателю, который затем вводит подписку в хранилище данных подписки. Эта подписка предназначена для сообщений, созданных в конкретной версии сборки.
Если издатель затем обновляет свою версию DLL сообщений и получает сообщение, которое ему необходимо опубликовать, он выполнит поиск по подпискам, которые он держит, и оценит каждую из них по очереди. Поскольку подписка существует для предыдущей версии сборки сообщений, процесс оценки будет игнорировать эту запись подписки, и, следовательно, никакое сообщение не будет отправлено подписчику.
Вы должны знать об этой жесткой зависимости в сценарии pub-sub.
Надеюсь, это поможет.
Редактировать
Начиная с версии 3.x NServiceBus, если основная версия сборки сообщений является общей для издателя и подписчика, pub-sub будет работать в обычном режиме.