Я не знаю, является ли это твердым решением или обходным путем
Если вы поместите конкретные классы и их интерфейсы в один проект / сборку и будете ссылаться на этот проект, то у Autofac не будет проблемы разрешения зависимостей, так какон имеет интерфейсы, а также классы
НО
, если вы помещаете конкретные классы и связанные интерфейсы в отдельный проект / сборки, тогда вы ссылаетесь только на проект / сборки интерфейса, а не на проект / сборки конкретных классов какреализовать
SOLID
Тогда возникает проблема, поскольку вы ссылаетесь только на интерфейсы, поэтому dot net не будет перемещать сборки (dll) конкретного класса в папку выполнения проекта пользовательского интерфейса (asp.net mvc) и AutofacУ меня проблема с разрешением зависимостей
Теперь, как я решил, я добавил команду скопировать сборку (файл dll) каждого проекта библиотеки классов в папку bin пользовательского интерфейса (asp.net mvc) в записи проекта библиотеки классов.построить событие, как показано ниже
Затем использовал следующий код для загрузки и регистрации сборок с помощью Autofac
AppDomain.CurrentDomain.Load("WsafEntities");
AppDomain.CurrentDomain.Load("WsafEntitiesInterfaces");
AppDomain.CurrentDomain.Load("WsafDACs");
AppDomain.CurrentDomain.Load("WsafDACsInterfaces");
AppDomain.CurrentDomain.Load("WsafRepositories");
AppDomain.CurrentDomain.Load("WsafRepositoriesInterfaces");
builder.RegisterAssemblyTypes(AppDomain.CurrentDomain.GetAssemblies().Where(t => t.FullName.Contains("Wsaf")).ToArray())
.AsImplementedInterfaces();
builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly())
.Where(t => t.Name.EndsWith("Controller"));