更新时间:2023-02-16 14:24:57
存在类似的问题,并通过在执行containerBuilder.Build()
之前添加containerBuilder.Populate(serviceCollection)
来解决.
Had a similar issue and solved it by adding containerBuilder.Populate(serviceCollection)
before doing containerBuilder.Build()
.
按照您在问题中提供的示例,它看起来像这样-
Following the sample you provided in your question, it would look something like this -
public class AutoFacAssemblyRegistration
{
public static IContainer RegisterAllAssemblies(IServiceCollection services)
{
var builder = new ContainerBuilder();
builder.Populate(services);
string executingDirectory = Directory.GetCurrentDirectory();
// string[] files = Directory.GetFiles(executingDirectory, "*.dll");
string[] files = Directory.GetFiles(@"PATH_HERE", "*.dll");
var listOfAssemblies = new List<Assembly>();
foreach (string item in files)
{
listOfAssemblies.Add(item: Assembly.LoadFile(item));
}
builder.RegisterAssemblyTypes(listOfAssemblies.ToArray()).AsImplementedInterfaces().InstancePerLifetimeScope();
//builder.RegisterAssemblyModules(listOfAssemblies.ToArray());
return builder.Build();
}
}