簡體   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