fix: load plugins in subdirectories

This commit is contained in:
goat 2020-01-27 17:32:28 +09:00
parent 09e88f42cf
commit b3e6ab7850

View file

@ -33,22 +33,22 @@ namespace Dalamud.Plugin
} }
public void LoadPlugins() { public void LoadPlugins() {
LoadPluginsAt(this.defaultPluginDirectory); LoadPluginsAt(new DirectoryInfo(this.defaultPluginDirectory));
LoadPluginsAt(this.pluginDirectory); LoadPluginsAt(new DirectoryInfo(this.pluginDirectory));
} }
private void LoadPluginsAt(string folder) { private void LoadPluginsAt(DirectoryInfo folder) {
if (Directory.Exists(folder)) if (folder.Exists)
{ {
Log.Debug("Loading plugins at {0}", folder); Log.Debug("Loading plugins at {0}", folder);
var pluginFileNames = Directory.GetFiles(folder, "*.dll"); var pluginDlls = folder.GetFiles("*.dll", SearchOption.AllDirectories);
var assemblies = new List<Assembly>(pluginFileNames.Length); var assemblies = new List<Assembly>(pluginDlls.Length);
foreach (var dllFile in pluginFileNames) foreach (var dllFile in pluginDlls)
{ {
Log.Debug("Loading assembly at {0}", dllFile); Log.Debug("Loading assembly at {0}", dllFile);
var assemblyName = AssemblyName.GetAssemblyName(dllFile); var assemblyName = AssemblyName.GetAssemblyName(dllFile.FullName);
var pluginAssembly = Assembly.Load(assemblyName); var pluginAssembly = Assembly.Load(assemblyName);
assemblies.Add(pluginAssembly); assemblies.Add(pluginAssembly);
} }