2014-01-28 62 views
1

我正在研究通過Assembly.Load加載插件的應用程序。我想確保插件DLL不包含更多的編譯代碼,然後他們需要。目前,我有2個項目:如何在.NET中組織插件DLL的引用

  • 應用
  • 爲myplugin

爲myplugin有一個類從應用程序項目實施IPlugin,並引用項目這樣做。 這是做到這一點的正確方法嗎?或者我應該在單獨的項目中放置IPlugin(以及任何插件需要訪問的接口),還是有其他更好的方法來做到這一點?

回答

1

我肯定會創建一個只包含可以被插件項目引用的合約(接口)的新項目。另外,請看MEF

這是在.NET中創建插件體系結構的好方法。它也是.NET的一部分。

+0

爲什麼只有合同的單獨項目會更好?我知道這是我能做的事情,但我不知道爲什麼我會這樣做。此外,我嘗試使用MEF2,但遇到了麻煩,缺乏文檔。 –

+0

好吧,如果你將接口放在你的「應用程序」項目中,那麼所有的插件都會對消費應用程序有太多瞭解(甚至可以嘗試使用公有的) - 以便進行多次耦合。如果你想構建一個很酷的新應用程序並重用這些插件呢?你真的想要新的應用程序引用舊的?您的目標是擴展,只要滿足合同,主機應用程序的工作方式並不重要(從插件的角度來看)。關於擴展Visual Studio的Tink ...這些擴展沒有引用Visual Studio本身... – Helikaon

+0

我在當前的項目中將MEF與Prism結合使用,我們對此感到滿意。文檔有點缺乏,但絕對值得花費一些時間瞭解MEF及其功率 – Helikaon