using System.Reflection; using Autofac; using Autofac.Core; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyModel; namespace KH.WMS.Core.DependencyInjection; /// /// 服务集合扩展方法 /// public class ServiceExtensions : Autofac.Module { protected override void Load(ContainerBuilder builder) { List assemblies = GetReferencedAssemblies(); IServiceRegistrar registrar = new ServiceRegistrar(); registrar.Register(builder, assemblies.ToArray()); } /// /// 获取项目内的程序集 /// /// private List GetReferencedAssemblies() { List assemblies = new(); string basePath = AppContext.BaseDirectory; try { List compilationLibraries = DependencyContext.Default.RuntimeLibraries.Where(x => x.Name.StartsWith("KH.WMS")).ToList(); foreach (var library in compilationLibraries) { try { string path = Path.Combine(basePath, $"{library.Name}.dll"); if (!File.Exists(path)) { continue; } assemblies.Add(Assembly.LoadFrom(path)); } catch (Exception ex) { Console.WriteLine(library.Name + ex.Message); } } } catch (Exception ex) { Console.WriteLine($"错误: 获取程序集失败: {ex.Message}"); } return assemblies; } }