2012-08-30 209 views
0

簡單示例。MEF依賴關係問題

應用程序A有一個通過使用的類庫C.

應用程序A使用MEF從插件目錄中發現並加載插件模塊P1和P2。每插入一個組件。

P1和P2都對C(類庫)有依賴關係。

構建過程將確保由P1用C的版本是相同的由A.

引用的版本我假設我不會立刻加載同一組件的多個副本結束?默認情況下,我最終得到了插件目錄中的C副本以及A的應用程序目錄。

回答

1

爲確保您不會因爲重複的程序集而導致您可以將Copy Local屬性更改爲插件項目中的契約(C)庫的false,這種構建方式不會將其複製到輸出目錄。

你應該沒問題,我認爲,由於Fusion加載器規則,CLR不會加載兩次相同的程序集 - 第一個是查看目標程序集是否已在AppDomain中加載。但是,您必須非常小心,因爲如果使用Assembly.LoadFrom的代碼實際上發現組件在磁盤上具有不同的位置,則可能會導致發生異常。

+0

是的,我想我會有一點戲劇,並確保它不會做任何愚蠢的事情。我有點擔心MEF可能會重載一些程序集加載事件,並......做些事情...... :)謝謝。 – Ian