2015-10-03 1 views
0

Я пытаюсь создать приложение, которое использует Autofac и загружает внешние DLL. Следующий код работает, если DLL находится в той же папке, и программа проходила с одной и той же папки:Autofac не будет разрешать класс из внешней 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

Это зависит от того, какие значения присвоены assemblies. Autofac не будет загружать DLL, он просто сканирует уже загруженные сборки.

Прочитать Dynamicic Module Loading, чтобы узнать, как загрузить внешние библиотеки DLL.

+0

Спасибо, это не поможет. Я действительно пытался это сделать. Хм .... Я буду продолжать исследовать =). Я буду голосовать за помощь =) – Sharper

Смежные вопросы