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