2012-11-09 80 views
1

我正在使用ninject xml擴展來爲同一個可執行文件(插件)提供不同的DAL。我的想法是使用ninject xml文件將所有這些文件(DLL)放在主應用程序的子文件夾中。Ninject XML擴展 - 插件體系結構

問題是ninject無法在xml中找到引用的綁定。它只適用於我將dll複製到主應用程序(.exe)的同一文件夾。

我試圖加載內核

Assembly assembly = Assembly.LoadFrom(dll); 
AppDomain.CurrentDomain.Load(assembly.GetName()); 
Kernel.Load(xmlFile); 

但仍然does not工作之前,加載的DLL。 (錯誤:「不可能解決型‘的MyType’定義‘到’屬性爲」

是否有人知道某種方式在ninject-XML文件或加載類型從另一個文件夾指一個具體的文件夾,可以使用ninject-xml擴展來解決?

回答

0

我解決了這個問題,在配置文件中使用了「探測」元素。它在分辨率範圍內包含一個文件夾。

<runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <probing privatePath="Plugins"/> 
     </assemblyBinding> 
</runtime> 

更多信息here

感謝所有。

0

約定的擴展可能是通過根據DLL存在的情況加載綁定來解決問題嗎?如果不是的話,你能否詳細解釋一下你的問題?

+0

似乎Ninject無法解析類型時,他們是在放在子文件夾(./Plugins/MyType.dll)中的DLL中聲明。當它放在主文件夾中時,它工作正常。請注意,在這兩種情況下,dll都不是從主項目引用的,它的想法是動態加載它們。 – Morvader

+2

自定義文件夾不是.NET程序集解析查找的一部分:http://stackoverflow.com/questions/4145728/what -is-the-net-folder-search-hierarchy - 此外,你還沒有說出實際的錯誤是什麼。說它「仍然不起作用」並不能告訴我們你遇到的錯誤。也許如果你使用xml來指定要加載哪些庫,並使用約定擴展從這些程序集中進行選擇並創建綁定,那麼可能有些東西可以解決你的問題。 –

+0

問題在於ninject無法解析在xml中指定的綁定:「在'屬性」中定義的Couldnt解析器類型MyType。無論如何,感謝解析查找鏈接,我解決了我的問題,將「探測」元素添加到配置中。如果你想寫它作爲答案,我會接受它。謝謝!。 – Morvader