MVCCorePluginManager
1.0.0
ASP.NET Core v2.2的简单插件管理器
它提供了一种开发与ASP.NET Core v2.2上插件合作的项目的简单方法
用法:
第1节:要开发一个插件,首先,我们必须从MVCCOREPLUGINMANAGER项目实现Imodule接口。
例子:
public class TestPluginModule : IModule
{
public string Title
{
get { return "TestPlugin Index Page"; }
}
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 "TestPlugin"; }
}
}
该接口中最重要的部分是EntryControllerName。我们被指定此插件的主控制器。这是插件的入口点。创建此控制器后,您可以定义所需的任何内容。它将像从主项目的内部一样运行。
核心v2.x已经编译了视图,您将获得两个DLL。如果您没有任何视图,那么您只会得到一个。
第2节:
现在,我们必须将此代码添加到主要项目中,以包括插件管理器:
[汇编:hostingstartup(typeof(pluginmanagerhostingstartup))]]]
简而言之,我们可以在program.cs或startup.cs中添加
另外,我们必须更改我们的程序。CS有点像这样:
public static async Task Main(string[] args)
{
await ApplicationManager.RunAsync(CreateWebHostBuilder, args);
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args)
{
return WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
}
我们之所以这样做,是因为,在添加或删除每个插件后,应用程序应重新启动。使用此代码,它会自动重新启动。
如果我们不更改这样的代码,则在任何插件更改过程之后,应用程序停止,当我们执行任何请求时,我们将看到一个错误页面。
第3节:
现在,是时候在任何页面中使用插件了。
为此,我们请求该插件在View的代码块中,然后在HTML块中添加
@{
var testPluginModule = PluginManager.GetModule("Plugins.TestPlugin"); // Your plugin assembly name without extension.
}
@if (testPluginModule != null)
{
@Html.ActionLink(testPluginModule.Title, "Index", testPluginModule.EntryControllerName)
}
在代码上,我们要做的就是这些。
第4节:
最后,我们可以添加或删除插件。只要您要这样做,在插件文件夹中添加组件或从中删除。插件文件夹在项目的根部。
另外,如果您愿意,可以在自己的文件夹中添加插件。以这种方式,您的代码可以更有条理...
请记住给插件文件夹的写入权限!
另外,您可以在https://test3.bilalafsar.com上查看示例