13 var plugins =
new List<Plugin>();
14 if (!Directory.Exists(pluginsRoot))
return plugins;
15 var shared = sharedAssemblyNames ??
new[] { Assembly.GetExecutingAssembly().GetName().Name! };
17 foreach (var pluginDir
in Directory.GetDirectories(pluginsRoot))
21 var dlls = Directory.GetFiles(pluginDir,
"*.dll");
22 if (dlls.Length == 0)
continue;
24 string pluginDll = dlls.FirstOrDefault(f =>
25 string.Equals(Path.GetFileNameWithoutExtension(f), Path.GetFileName(pluginDir), StringComparison.OrdinalIgnoreCase))
29 var assembly = loadContext.LoadFromAssemblyPath(pluginDll);
31 foreach (var type
in assembly.GetExportedTypes())
34 var ctor = type.GetConstructor(Type.EmptyTypes);
35 if (ctor ==
null)
continue;
36 var obj = ctor.Invoke(Array.Empty<
object>());
38 manager.Register(model);
42 Directory = pluginDir,
43 LoadContext = loadContext,
51 Console.WriteLine($
"[PluginLoader] Fehler beim Laden von '{pluginDir}': {ex.Message}");