我有一個使用MEF加載擴展的Outlook插件。這些擴展都是以C#類庫的形式創建的。當Outlook插件啓動時,它將所有插件DLL從網絡目錄複製到本地計算機,然後通過MEF加載它們。帶額外DLL的MEF
對於其中之一,我正在使用MySql.Data.dll庫。該DLL被複制到我放置MEF加載的DLL的同一目錄中,但那個不起作用。最終用戶會得到一個異常,說它找不到MySql dll。
將通過MEF導入包含的類庫所需的額外DLL放在什麼位置?
我有一個使用MEF加載擴展的Outlook插件。這些擴展都是以C#類庫的形式創建的。當Outlook插件啓動時,它將所有插件DLL從網絡目錄複製到本地計算機,然後通過MEF加載它們。帶額外DLL的MEF
對於其中之一,我正在使用MySql.Data.dll庫。該DLL被複制到我放置MEF加載的DLL的同一目錄中,但那個不起作用。最終用戶會得到一個異常,說它找不到MySql dll。
將通過MEF導入包含的類庫所需的額外DLL放在什麼位置?
我沒有在一個項目中使用過MEF,但我不得不在一些場合推出我自己的插件架構。你可以嘗試的東西是掛鉤到AppDomain.AssemblyResolve
事件。我不知道該頁面上的示例有多有用,但是您可以在事件參數中檢查程序集名稱,並嘗試從加載插件的相同文件夾加載該程序集。
謝謝,這解決了我的問題,我拿着程序集,運行它通過Assembly.LoadFrom(),然後返回結果,現在事情很好。 – Gargoyle
您使用的是什麼樣的目錄?嘗試添加一些示例代碼和其他錯誤信息。 –
我正在使用一個AggregateCatalog(),並且我通過DLL文件夾將它們傳遞到AssemblyCatalog()中。錯誤只是「無法加載文件或程序集,'MySql.Data,Version .....' – Gargoyle
嘗試使用fuslogvw.exe來診斷程序集加載錯誤。它可能是MySql.Data的依賴項 –