[英]How to organize a modular (C#/MEF) application in Visual Studio to allow debugging?
我正在使用C#和MEF開發模塊化應用程序。 該應用程序應包含
主應用程序可以全部運行,也可以導入一個或多個插件。 對於基於模塊化MEF的應用程序,這應該是一個相當標准的體系結構。 初步測試表明,這似乎普遍有效。 如果我將主應用程序以及一個或多個插件程序集部署到一個文件夾中,則一切正常。
但是,我正在為如何組織Visual Studio解決方案而苦苦掙扎。 我最初的方法是主應用程序以及每個插件都是解決方案中的獨立項目。 主要應用程序是一個exe項目,而插件是dll項目。 插件項目依賴於主項目,因為它們正在實現接口並使用在主應用程序中定義的類(我本可以創建一個通用的lib項目來執行此操作,但似乎沒有任何好處)。
這樣,我可以很好地啟動和調試主應用程序(沒有插件)。
但是如何組織解決方案,以便我可以使用一個,多個或所有插件調試主應用程序? 當前的方法是將每個插件構建到自己的文件夾中(通常很好),然后將主應用程序復制到其中的每個應用程序中(不太理想)。 我可能會配置一個單獨的插件項目,以在其輸出文件夾中啟動主應用程序,但是我不知道如何對多個插件執行此操作,或者如果不應將主應用程序復制到該插件中,該怎么做每個插件輸出文件夾。
任何提示或最佳做法將不勝感激。 我正在使用Visual Studio 2015-如果有什么不同。
插件項目依賴於主項目,因為它們正在實現接口並使用在主應用程序中定義的類(我本可以創建一個通用的lib項目來執行此操作,但似乎沒有任何好處)。
它有很多好處,有幾個:
但是如何組織解決方案,以便我可以使用一個,多個或所有插件調試主應用程序?
通常,您在啟動時告訴主應用程序要加載哪些插件。 有多種方法可以執行此操作:讀取包含插件名稱的文件,掃描已知目錄中的插件,以及兩者的結合。 所有都支持或相對容易使用MEF實施。 例如,對於我們擁有的一個大型C#應用程序,所有插件都被復制到bin \\ Plugins之類的文件中。 當應用程序啟動時,它將在bin \\ Plugins中查找dll,根據包含正則表達式的文本文件過濾列表,然后從過濾后的列表中加載插件。 將應用程序發送給客戶時,他們可以獲得全部或僅一些插件。 開發時,我們使用文本文件來減少應用程序的加載時間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.