Skip to content

RsCode.AspnetCore 支持“热插拔”插件功能

运行环境要求.net core sdk3.1以上 ,安装RsCode.AspNetCore 1.3.0以上版本

通过插件管理,可以方便的安装与卸载插件程序。

使用插件功能的四步骤:

第一步 创建插件项目

1.1 实现IPluginModule接口

csharp
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目录
生成 输出路径 生成项目

第二步 创建主项目

添加以下代码到主项目

csharp
[assembly: HostingStartup(typeof(PluginManagerHostingStartup))]
namespace MyWeb
{
   public class Startup
   {
      ....
   }
}

更换Program.cs

csharp
public class Program
{
    public static async Task Main(string[] args)
    {
        //CreateHostBuilder(args).Build().Run();
        await ApplicationManager.RunAsync(CreateHostBuilder, args); //使用插件管理项目
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
                                  {
                                      webBuilder.UseStartup<Startup>();
                                  }); 
}

第三步 在页面中使用插件

csharp
@{
    var testPluginModule = PluginManager.GetModule("Plugins.TestPlugin"); // 你的插件应用名称
}

@if (testPluginModule != null)
{
    @Html.ActionLink(testPluginModule.Title, "Index", testPluginModule.EntryControllerName)
}

第四步 添加或删除插件

添加或删除Plugins文件夹下的dll,即可完成插件安装与删除

注意:在每个插件添加或删除后,应用程序应该重新启动