2014-09-29 54 views
0

我有一個項目使用MEF並允許開發人員添加不同的插件。這些插件中的很多都有類似的方法,並且需要做類似的事情,所以我在另一個名爲PluginBase的項目中創建了一個基類,它們從中繼承。所有插件都構建到相同的目錄中(其中MEF加載其目錄),並且PluginBase dll也構建到該目錄。使用引用相同程序集的多個MEFS插件時引發錯誤

如果我只在該目錄中有1個插件,它工作正常。如果我有多個參考PluginBase,我收到錯誤:

{"Could not load type 'BCDTravel.API.PluginBase.PluginBase' from assembly 'TEST.API.PluginBase, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.":"TEST.API.PluginBase.PluginBase"} 

這是我收到的唯一消息。

我猜如果我將PluginBase添加到GAC中,它會起作用,但我並不真正瞭解問題所在。這是多次加載程序集的問題嗎?

謝謝!

+1

您不應該多次加載相同的程序集。如果'PluginBase'類屬於一個通用程序集,請將公共聲明放在應用程序的bin文件夾中,然後從那裏將它添加到MEF目錄中。從Plugins文件夾僅加載特定於插件的程序集。 – 2014-09-29 19:49:55

+0

我給了一個鏡頭,讓我知道如果我弄明白了,謝謝 – bsayegh 2014-09-29 20:08:40

+0

正確的答案,但我不能標記爲答案。 – bsayegh 2014-09-30 14:32:59

回答

1

問題是,您多次加載相同的程序集。將您的PluginBase類所屬的程序集放入應用程序的bin文件夾中,並從那裏將它添加到MEF目錄中。從Plugins文件夾僅加載特定於插件的程序集。

相關問題