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/Controllers/Test/TestController.R.cs | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 46 insertions(+), 0 deletions(-) diff --git a/Tiger.Api/Controllers/Test/TestController.R.cs b/Tiger.Api/Controllers/Test/TestController.R.cs index 0b48c83..61c346a 100644 --- a/Tiger.Api/Controllers/Test/TestController.R.cs +++ b/Tiger.Api/Controllers/Test/TestController.R.cs @@ -23,6 +23,8 @@ using Swifter.Tools; using Tiger.Model.Entitys.MES.Position; using Microsoft.CodeAnalysis.Options; +using System.IO; +using System.Runtime.Loader; namespace Tiger.Api.Controllers.Test { @@ -333,6 +335,50 @@ return Ok(result?.ToJson()); } + + [HttpGet] + public async Task<IActionResult> RefreashPlugin(string path) + { + var assemblies = AppDomain.CurrentDomain.GetAssemblies().Where(a => a.GetName().Name == "Tiger.Business.MES"); + // 鏌ユ壘鎸囧畾鍚嶇О鐨勭▼搴忛泦 + //var assembly = Array.Find(assemblies, a => a.GetName().Name == "Tiger.Business.MES"); + + //var ass = Assembly.LoadFrom(AppDomain.CurrentDomain.BaseDirectory + "\\Tiger.Business.MES1.dll"); + + + var mes1 = new AssemblyLoadContext("mes1", true); + var assembly1 = mes1.LoadFromAssemblyPath(AppDomain.CurrentDomain.BaseDirectory + "\\Tiger.Business1.MES.dll"); + mes1.Unloading += context => { Console.WriteLine($"褰撳墠鍗歌浇{context.Name}绋嬪簭闆嗭細" + string.Join(',', context.Assemblies.Select(x => x.FullName))); }; + assemblies = AppDomain.CurrentDomain.GetAssemblies().Where(a => a.GetName().Name == "Tiger.Business.MES"); + + var mes2 = new AssemblyLoadContext("mes2", true); + var assembly2 = mes2.LoadFromAssemblyPath(AppDomain.CurrentDomain.BaseDirectory + "\\Tiger.Business2.MES.dll"); + mes2.Unloading += context => { Console.WriteLine($"褰撳墠鍗歌浇{context.Name}绋嬪簭闆嗭細" + string.Join(',', context.Assemblies.Select(x => x.FullName))); }; + assemblies = AppDomain.CurrentDomain.GetAssemblies().Where(a => a.GetName().Name == "Tiger.Business.MES"); + + mes1.Unload(); + assemblies = AppDomain.CurrentDomain.GetAssemblies().Where(a => a.GetName().Name == "Tiger.Business.MES"); + mes2.Unload(); + assemblies = AppDomain.CurrentDomain.GetAssemblies().Where(a => a.GetName().Name == "Tiger.Business.MES"); + + + + + + //var newBuilder = new ContainerBuilder(); + + ////AutoFac 閰嶇疆鏂囦欢娉ㄥ叆 + //AutoFacContainer.Init(newBuilder); + //newBuilder.RegisterBuildCallback(scope => + //{ + + // AutoFacContainer.Instance = (IContainer)scope; + //}); + //var newContainer = newBuilder.Build(); + //var trans = AutoFacContainer.Instance.Resolve<ITestNode>().Init("action.ID", "Request.Host.Value", "action.Data?.USER_CODE", "OQC001"); + //var d = trans.GetDefects(); + return Ok($""); + } } /// <summary> -- Gitblit v1.9.3