From 38bde3e8210c41e9d0d219daba0c075cd676efce Mon Sep 17 00:00:00 2001 From: Rodney Chen <rodney.chen@hotmail.com> Date: 星期四, 24 十月 2024 10:20:54 +0800 Subject: [PATCH] 优化dll加载 --- Tiger.Api/Autofac/AutoFacContianer.cs | 25 ++++++++++++++++++------- 1 files changed, 18 insertions(+), 7 deletions(-) diff --git a/Tiger.Api/Autofac/AutoFacContianer.cs b/Tiger.Api/Autofac/AutoFacContianer.cs index db6b664..3ce35cd 100644 --- a/Tiger.Api/Autofac/AutoFacContianer.cs +++ b/Tiger.Api/Autofac/AutoFacContianer.cs @@ -22,6 +22,7 @@ /// 瀹瑰櫒 /// </summary> public static IContainer Instance; + public static AppDomain AppDomain; /// <summary> /// 鍒濆鍖栧鍣� @@ -46,14 +47,24 @@ #region 鍔ㄦ�佸姞杞藉涓猟ll string[] assemblyPattern = new[] { "Tiger.Business([.].*)*.dll" }; - // 1. Scan for assemblies containing autofac modules in the bin folder - List<Assembly> assemblies = new List<Assembly>(); - assemblies.AddRange( - Directory.EnumerateFiles(AppDomain.CurrentDomain.BaseDirectory, "*.dll", SearchOption.AllDirectories) - .Where(filename => assemblyPattern.Any(pattern => Regex.IsMatch(filename, pattern))) - .Select(Assembly.LoadFrom) - ); + //AppDomain = AppDomain.CreateDomain("AutoFac Dll"); + //List<Assembly> assemblies = new List<Assembly>(); + //foreach (var file in Directory.EnumerateFiles(AppDomain.CurrentDomain.BaseDirectory, "*.dll", SearchOption.AllDirectories).Where(filename => assemblyPattern.Any(pattern => Regex.IsMatch(filename, pattern)))) + //{ + // var assembly = AppDomain.Load(Assembly.LoadFrom(file).GetName()); + // assemblies.Add(assembly); + //} + // 1. Scan for assemblies containing autofac modules in the bin folder + //List<Assembly> assemblies = new List<Assembly>(); + //assemblies.AddRange( + // Directory.EnumerateFiles(AppDomain.CurrentDomain.BaseDirectory, "*.dll", SearchOption.AllDirectories) + // .Where(filename => assemblyPattern.Any(pattern => Regex.IsMatch(filename, pattern))) + // .Select(Assembly.LoadFrom) + //); + + + var assemblies = PluginManager.Load(AppDomain.CurrentDomain.BaseDirectory, "Tiger.Business([.].*)*.dll"); foreach (var assembly in assemblies) { builder.RegisterAssemblyTypes(assembly).AsImplementedInterfaces(); -- Gitblit v1.9.3