var pluginAssemblies =
Directory.GetFiles(Path.Combine(AppContext.BaseDirectory), "plugin/*.dll", SearchOption.AllDirectories);
// Load DLL plugins.
foreach (var pluginAssembly in pluginAssemblies)
{
try
{
var assemblyLoadContext = new AssemblyLoadContext(Path.GetFileName(pluginAssembly));
var assembly = assemblyLoadContext.LoadFromAssemblyPath(pluginAssembly);
var pluginTypes = assembly.GetTypes().Where(type => typeof(PluginBase).IsAssignableFrom(type));
foreach (var pluginType in pluginTypes)
{
builder.Services.AddScoped(typeof(IPlugin), pluginType);
builder.Services.AddControllersWithViews()
.AddApplicationPart(pluginType.Assembly)
.AddRazorRuntimeCompilation();
builder.Services.Configure<MvcRazorRuntimeCompilationOptions>(o =>
{
o.FileProviders.Add(new EmbeddedFileProvider(pluginType.Assembly));
});
builder.Services.AddRazorPages().AddApplicationPart(pluginType.Assembly)
.AddRazorRuntimeCompilation();
}
}
catch (Exception ex)
{
}
}
var pluginAssemblies =
Directory.GetFiles(Path.Combine(AppContext.BaseDirectory), "plugin/*.dll", SearchOption.AllDirectories);
// Load DLL plugins.
foreach (var pluginAssembly in pluginAssemblies)
{
try
{
var assemblyLoadContext = new AssemblyLoadContext(Path.GetFileName(pluginAssembly));
var assembly = assemblyLoadContext.LoadFromAssemblyPath(pluginAssembly);
var pluginTypes = assembly.GetTypes().Where(type => typeof(PluginBase).IsAssignableFrom(type));
foreach (var pluginType in pluginTypes)
{
builder.Services.AddScoped(typeof(IPlugin), pluginType);
builder.Services.AddControllersWithViews()
.AddApplicationPart(pluginType.Assembly)
.AddRazorRuntimeCompilation();
builder.Services.Configure<MvcRazorRuntimeCompilationOptions>(o =>
{
o.FileProviders.Add(new EmbeddedFileProvider(pluginType.Assembly));
});
builder.Services.AddRazorPages().AddApplicationPart(pluginType.Assembly)
.AddRazorRuntimeCompilation();
}
}
catch (Exception ex)
{
}
}