繁体   English   中英

NService总线和GAC

[英]NService bus and the GAC

我最近尝试将NServiceBus库迁移到GAC,因为它们很大,几乎是我所有软件中都需要的。 我正在使用最新的.NET 4.0 Build(2.0.0.1219),并已使用GACUTIL将NServiceBus和NServiceBus.Core复制到新的GAC中,并将log4net复制到旧的2.0 GAC中。 我已经通过连接版本和PublicKeyToken设法使log4net工作,但是我无法使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成功合作?

干杯

NServiceBus剥离强名称是一个问题。 使用web.config<runtime>元素:

<runtime>
    <qualifyAssembly partialName="MessagesDll" fullName="MessagesDll, Version=1.0.0.0, Culture=neutral, PublicKeyToken=4d476a51357cea5c" />

NServiceBus扫描目录中的程序集(应用程序的运行目录,Web应用程序的网站的编译目录)以便加载所有消息处理程序,这意味着它需要同时扫描自身以及所需的所有类型。依赖注入。

我不确定默认情况下该模型是否支持GAC中存在的程序集,尽管如果您自己配置NServiceBus,则可以指定程序集通过NServiceBus.Configure.With(params Assembly [] assembly)重载来加载自己,只要确保至少包括所有NServiceBus程序集和Log4Net。

但是,我认为将GAC引入NSB程序集可能不是最好的主意。 每个端点都有自己的程序集副本,可以增强端点的自治性,并且如果您需要升级到新版本的NServiceBus,将使其更加容易,因为您将能够单独测试每个端点,而不仅仅是放置一个端点。 GAC中的新程序集,添加绑定重定向,并希望一切继续正常进行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM