NService автобус и GAC - PullRequest
       2

NService автобус и GAC

1 голос
/ 02 июля 2010

Я недавно пытался перенести библиотеки NServiceBus в GAC, так как они довольно большие и необходимы почти во всех моих программах.Я использую новейшую сборку .NET 4.0 (2.0.0.1219) и использую GACUTIL для копирования NServiceBus & NServiceBus.Core в новый GAC и log4net в старый 2.0 GAC.Мне удалось заставить log4net работать, подключив версию и PublicKeyToken, но я не могу заставить работать NServiceBus.Core.Каждый раз, когда я запускаю часть программного обеспечения, я получаю следующую ошибку:

"Тип NServiceBus.Unicast.Transport.CompletionMessage не зарегистрирован в сериализаторе. Убедитесь, что он отображается в списке настроенных сборок / типов для сканирования. "

Когда я копирую DLL NServiceBus.Core в локальную папку, все работает нормально.

моя конфигурация выглядит так:

<configSections>
<section name="MsmqTransportConfig" type="NServiceBus.Config.MsmqTransportConfig, NServiceBus.Core, Version=2.0.0.1219, Culture=neutral, PublicKeyToken=9fc386479f8a226c" />
<section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core, Version=2.0.0.1219, Culture=neutral, PublicKeyToken=9fc386479f8a226c" />
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821" />
<sectionGroup name="common">
  <section name="logging" type="Common.Logging.ConfigurationSectionHandler, NServiceBus.Core, Version=2.0.0.1219, Culture=neutral, PublicKeyToken=9fc386479f8a226c"/>
</sectionGroup>

Так что мне интересно, кто-нибудь еще получил NServiceBus, успешно работающий с GAC?

Приветствия

Ответы [ 2 ]

2 голосов
/ 13 декабря 2011

Это проблема с NServiceBus, убирающим строгие имена.Используйте элемент <runtime> в web.config:

<runtime>
    <qualifyAssembly partialName="MessagesDll" fullName="MessagesDll, Version=1.0.0.0, Culture=neutral, PublicKeyToken=4d476a51357cea5c" />
1 голос
/ 02 июля 2010

NServiceBus сканирует сборки в каталоге (каталог запуска для приложения, каталог веб-приложения, скомпилированный для веб-приложения), чтобы загрузить все обработчики сообщений, а это значит, что он должен сканировать себя также для всех типов это нужно для внедрения зависимости.

Я не уверен, что эта модель поддерживает сборки, живущие в GAC по умолчанию, хотя, если вы конфигурируете NServiceBus самостоятельно, вы можете указать сборки для загрузки через NServiceBus.Configure.With (params Assembly [] сборки перегрузка, просто убедитесь, что включены все сборки NServiceBus и Log4Net как минимум.

Однако я бы сказал, что GAC-сборка NSB может быть не лучшей идеей. Каждая конечная точка, имеющая собственную копию сборки, усиливает автономность конечных точек и значительно упростит процесс обновления до новой версии NServiceBus, так как вы сможете протестировать каждую конечную точку отдельно, а не просто поставить Новая сборка в GAC, добавьте перенаправление привязки и надеюсь, что все продолжает работать нормально.

...