2010-10-22 30 views
0

情況概述。如何使用庫版本動態加載(並使用).net庫與正確建立的依賴關係?

我們有多個項目用於多功能系統。

  1. objectAccessLibrary.dll(多個版本)
  2. dispatcherHandler.dll(V.1.0)(相關性:中objectAccessLibrary.dll 版本獨立部分)
  3. 事件處理程序:handler_01 .dllhandler_02.dllhandler_03.dll。 依賴關係:dispatcherHandler.dll(V.1.0),objectAccessLibrary.dll(特別 版本爲每個handler_xx.dll
  4. DispatcherService(依賴性:的objectAccessLibrary.dll特定版本)。動態加載處理程序並使用其功能來分派事件。

問題

objectAccessLibrary.dll正在開發與核心系統一起。它暴露了一些可以從版本更改爲版本的接口/對象。因此dispatcherHandler.dllDispatcherService應重新編譯,並與老處理器每次我們需要增加新的處理程序,因爲它必須使用的objectAccessLibrary.dll最新版本時重新測試。 但從另一端調度服務務必運行,而hanlder_xx.dll的動態加載。

當前版本工作正常,如果新的處理程序不使用新的objectAccessLibrary.dll功能。 一般情況下我們需要加載不同版本的objectAccessLibrary.dll,並在它們之間共享一些對象和dispatcherHandler.dll。這個怎麼做?

回答

1

我會建議尋找某種IoC容器,如StructureMapCastle Windsor。兩者都非常成熟,並且允許您動態地將依賴關係加載到您的項目中。還有很多其他容器也可以滿足您的要求。

+0

我試過了,但其他版本的程序集沒有加載時,AppDomain的版本加載了dispatcherHandler.dll – amuliar 2010-11-05 12:19:30

+0

你有沒有嘗試特別添加版本化的程序集到容器?我在過去的配置文件中指定了程序集名稱,並將它們以這種方式添加到容器中。 – phreak3eb 2010-11-05 18:22:04