2012-11-09 68 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