且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Autofac程序集扫描-.NET Core

更新时间: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();
    }
  }