From 6f3765a3bfa87a1bec449a80f6c59378963ed7b4 Mon Sep 17 00:00:00 2001 From: Marcel Baumgartner Date: Tue, 1 Aug 2023 22:21:19 +0200 Subject: [PATCH] Fixed plugin loading system --- .../App/Services/Plugins/PluginService.cs | 22 ++++--------------- 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/Moonlight/App/Services/Plugins/PluginService.cs b/Moonlight/App/Services/Plugins/PluginService.cs index 91e1cfbd..893bd462 100644 --- a/Moonlight/App/Services/Plugins/PluginService.cs +++ b/Moonlight/App/Services/Plugins/PluginService.cs @@ -12,29 +12,13 @@ public class PluginService public List Plugins { get; private set; } public Dictionary PluginFiles { get; private set; } - private AssemblyLoadContext LoadContext; - public PluginService() { - LoadContext = new(null, true); ReloadPlugins().Wait(); } - private Task UnloadPlugins() + public Task ReloadPlugins() { - Plugins = new(); - PluginFiles = new(); - - if(LoadContext.Assemblies.Any()) - LoadContext.Unload(); - - return Task.CompletedTask; - } - - public async Task ReloadPlugins() - { - await UnloadPlugins(); - // Try to update all plugins ending with .dll.cache foreach (var pluginFile in Directory.EnumerateFiles( PathBuilder.Dir(Directory.GetCurrentDirectory(), "storage", "plugins")) @@ -59,7 +43,7 @@ public class PluginService PathBuilder.Dir(Directory.GetCurrentDirectory(), "storage", "plugins")) .Where(x => x.EndsWith(".dll"))) { - var assembly = LoadContext.LoadFromAssemblyPath(pluginFile); + var assembly = Assembly.LoadFile(pluginFile); foreach (var type in assembly.GetTypes()) { @@ -76,6 +60,8 @@ public class PluginService } Logger.Info($"Loaded {Plugins.Count} plugins"); + + return Task.CompletedTask; } public async Task BuildServerPage(ServerPageContext context)