Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Castle Windsor使用FromAssembly注册需要一些第三方引用的DLL,但不是全部_C#_.net_Dependency Injection_Castle Windsor - Fatal编程技术网

C# Castle Windsor使用FromAssembly注册需要一些第三方引用的DLL,但不是全部

C# Castle Windsor使用FromAssembly注册需要一些第三方引用的DLL,但不是全部,c#,.net,dependency-injection,castle-windsor,C#,.net,Dependency Injection,Castle Windsor,我有一个单独的项目,我用它来处理我所有的Castle Windsor安装和安装程序 在一个安装程序中,我尝试使用以下约定注册存储库: Classes.FromAssemblyContaining(typeof(BaseRepository)).BasedOn(typeof(IRepository)) .WithServiceSelf() 当我在项目的任何安装程序中使用任何形式的FromAssembly时,当安装程序被执行时,我会得到一个异常,即它无法找到某个第三方dll 但是,如果我单独注册组

我有一个单独的项目,我用它来处理我所有的Castle Windsor安装和安装程序

在一个安装程序中,我尝试使用以下约定注册存储库:

Classes.FromAssemblyContaining(typeof(BaseRepository)).BasedOn(typeof(IRepository))
.WithServiceSelf()
当我在项目的任何安装程序中使用任何形式的FromAssembly时,当安装程序被执行时,我会得到一个异常,即它无法找到某个第三方dll

但是,如果我单独注册组件:

Component.For<IVendorRepository>().ImplementedBy<VendorRepository>()
Component.For<IContactRepository>().ImplementedBy<ContactRepository>()
Component.For().ImplementedBy()实现
Component.For().ImplementedBy()实现
我没有得到错误,配置的容器按预期返回

尤其令人沮丧的是,当使用FromAssembly时,bin文件夹中并不需要我的所有第三方DLL,只有少数几个

使用FromAssembly时会发生什么情况,导致某些DLL是必需的,而其他DLL是可选的


是否有一种不必使用FromAssembly就可以按约定注册的方法?

这里没有足够的信息来明确说明为什么需要某些第三方程序集,而不需要其他第三方程序集。我最好的猜测是,当您开始通过约定注册组件时,某些第三方库当前已加载,而其他库则未加载

但是,要回答您的问题,是的,您可以按照约定注册,同时避免特定的程序集。围绕此(in)的一个选项是仅在应用程序的根命名空间中注册组件,以防止第三方DLL注册

 Classes
    .FromAssemblyContaining(typeof(BaseRepository))
    .BasedOn(typeof(IRepository))
    .WithServiceSelf()
    .Where(Component.IsInNamespace("Your.Application.Namespace"))