插件开发测试完成

This commit is contained in:
FalconFly 2023-12-27 14:03:04 +08:00
parent 488a717875
commit 850f3efabd
3 changed files with 13 additions and 5 deletions

View File

@ -1,4 +1,5 @@
using System.IO; using System;
using System.IO;
using System.Reflection; using System.Reflection;
using System.Runtime.Loader; using System.Runtime.Loader;
@ -22,6 +23,7 @@ namespace Falcon.SugarApi.Plugin
/// </summary> /// </summary>
/// <param name="assemblyPath">程序集路径</param> /// <param name="assemblyPath">程序集路径</param>
/// <returns>程序集</returns> /// <returns>程序集</returns>
[Obsolete("方法存在问题程序集注册的对象无法实现注入目前未解决。使用AssemblyLoad代替",false)]
public static Assembly ALCLoad(string assemblyPath) { public static Assembly ALCLoad(string assemblyPath) {
var context = new AssemblyLoadContext(assemblyPath); var context = new AssemblyLoadContext(assemblyPath);
return context.LoadFromAssemblyPath(assemblyPath); return context.LoadFromAssemblyPath(assemblyPath);

View File

@ -26,6 +26,7 @@ namespace Falcon.SugarApi.Plugin.Client
return; return;
} }
apm.ApplicationParts.Add(part); apm.ApplicationParts.Add(part);
}); });
return services; return services;
} }

View File

@ -13,6 +13,11 @@ namespace Falcon.SugarApi.Plugin.Service
/// </summary> /// </summary>
public static class IServiceCollectionExtend public static class IServiceCollectionExtend
{ {
/// <summary>
///
/// </summary>
//public static List<Assembly> Plugins { get; set; } = new List<Assembly>();
/// <summary> /// <summary>
/// 注册插件。 /// 注册插件。
/// <para>查找插件中的IServicePlugin实现并运行其中的AddServices方法注册和初始化插件</para> /// <para>查找插件中的IServicePlugin实现并运行其中的AddServices方法注册和初始化插件</para>
@ -26,7 +31,6 @@ namespace Falcon.SugarApi.Plugin.Service
if(name == null) { if(name == null) {
return services; return services;
} }
List<Assembly> plugin = new();
var basePath = AppDomain.CurrentDomain.BaseDirectory; var basePath = AppDomain.CurrentDomain.BaseDirectory;
foreach(var pn in pluginNames) { foreach(var pn in pluginNames) {
var pf = pn.EndsWith(".dll") ? pn : pn + ".dll"; var pf = pn.EndsWith(".dll") ? pn : pn + ".dll";
@ -42,12 +46,13 @@ namespace Falcon.SugarApi.Plugin.Service
if(!File.Exists(pf)) { if(!File.Exists(pf)) {
throw new FileNotFoundException(pf); throw new FileNotFoundException(pf);
} }
var pa = AssemblyLoadHelp.ALCLoad(pf); //var pa = AssemblyLoadHelp.ALCLoad(pf);
var pa = AssemblyLoadHelp.AssemblyLoad(pf);
if(pa != null) { if(pa != null) {
plugin.Add(pa); services.AddPluginService(config,pa);
} }
} }
services.AddPluginService(config,plugin.ToArray());
return services; return services;
} }