2012-08-29 61 views
1

我正在使用MEF開發插件系統。基本插件與可執行文件合併(使用ilmerge)以獲得單個可執行文件。這些插件使用AssemblyCatalog加載。但也應該可以使用DirectoryCatalog來添加插件。未找到包含在可執行文件中的合約程序集

我的類庫項目引用合約庫並使用MEF導出類。當可執行文件嘗試加載dll時,它聲稱它無法解析依賴項到合約庫(包含在exe中)。它可以工作,如果我將Contract.dll複製到相同的目錄。但它包含在exe中嗎?

如何避免複製合同?

+0

你在System.ComponentModel.Composition.dll添加引用? –

+1

你可以發佈你的代碼:合同+主機與你的agregator +消費者 –

回答

0

與此代碼儘量保證你暴露你的圖書館在你的主機

AssemblyCatalog assemblyCatalog = new AssemblyCatalog(Assembly.GetExecutingAssembly()); 
DirectoryCatalog directoryCatalog = new DirectoryCatalog(@"...");//Replace with your path 

AggregateCatalog catalog = 
    new AggregateCatalog(new ComposablePartCatalog[] { assemblyCatalog, directoryCatalog }); 

CompositionContainer container = new CompositionContainer(catalog); 
+0

這正是我正在做的。 – Propantriol

相關問題