我正在尝试创建一个使用Autofac并加载外部dll的应用程序。 如果DLL位于同一文件夹中并且程序从同一文件夹运行,则以下代码有效:
builder.RegisterAssemblyTypes(assemblies.ToArray()).
Where(t => typeof(IImageConverter).IsAssignableFrom(t)).
InstancePerLifetimeScope().AsImplementedInterfaces();
现在,如果我尝试从其他位置运行程序,但将工作目录设置为DLL所在的目录,则autofac会查找并加载DLL,但不解析它以运行它:
using (var scope = _container.BeginLifetimeScope())
{
var processors = scope.Resolve<IEnumerable<IImageConverter>>();
foreach (var process in processors)
process.Process();
}
这是我唯一的autofac系列。接口在共享库中定义,每个模块默认实现它。我错过了什么?
提前致谢!
答案 0 :(得分:0)
取决于分配的值assemblies
。 Autofac不会加载DLL,它只扫描已加载的程序集。
阅读Dynamicic Module Loading以确定如何加载外部DLL。