插件管理 - kuiyu/RsCode GitHub Wiki
支持“热插拔”
要求.net core sdk3.1以上 ,安装RsCode.AspNetCore 1.3.0以上版本
通过插件管理,可以方便的安装与卸载插件程序,分四个步骤完成:
第一步 创建插件项目
1.1 实现IPluginModule接口
public class PluginSetup : IPluginModule
{
public string Title
{
get { return "插件标题"; }
}
public string Name
{
get { return Assembly.GetAssembly(GetType()).GetName().Name; }
}
public Version Version
{
get { return new Version(1, 0, 0, 0); }
}
public string EntryControllerName
{
get { return "rswl"; }
}
public string Description => "rscode插件描述";
public string Author => "rswl";
public string UpdateDate => "2020-1-1 20:22:00";
}
EntryControllerName是插件的主控制器。这是插件的入口点。 创建这个控制器之后,您可以定义任何您想要的东西。它将像从主项目内部运行一样。
1.2将项目输出类型 改成 类库
1.3将项目的输出路径,指定到 主项目Plugins\插件xxxx目录
生成 输出路径 生成项目
第二步 创建主项目, 添加以下代码到主项目
[assembly: HostingStartup(typeof(PluginManagerHostingStartup))]
namespace MyWeb
{
public class Startup
{
....
}
}
更换Program.cs
public class Program
{
public static async Task Main(string[] args)
{
await ApplicationManager.RunAsync(CreateHostBuilder, args);
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
在每个插件添加或删除后,应用程序应该重新启动
第三步 在页面中使用插件
@{
var testPluginModule = PluginManager.GetModule("Plugins.TestPlugin"); // Your plugin assembly name without extension.
}
@if (testPluginModule != null)
{
@Html.ActionLink(testPluginModule.Title, "Index", testPluginModule.EntryControllerName)
}
第四步 添加或删除插件 添加或删除Plugins文件夹下的dll,即可完成插件安装与删除