private void LoadPlugin(FileInfo file) { if (file.DirectoryName.Contains("packages")) { return; } var pluginConfFilename = Path.Combine(file.DirectoryName, "plugin.conf"); if (File.Exists(pluginConfFilename)) { var pluginConf = JsonUtils.FromJson <PluginConfig>(File.ReadAllText(pluginConfFilename)); _logger.LogInformation($"Loading plugin name {file.Name}"); try { var assembly = Assembly.LoadFile(file.FullName); AssemblyUtils.AddAssemblyToCache(assembly); _pluginsAssemblies.Add(assembly); } catch (Exception ex) { _logger.LogError($"Error during loading plugin {file.Name} => {ex}"); } } else { _logger.LogWarning($"Can't load plugin {file.Name}. File plugin.conf is missing!"); } }
private void LoadPlugins() { _pluginsAssemblies.Values.ToList().ForEach(p => { _logger.Debug($"Adding {p.GetName().Name} to assemblies cache"); AssemblyUtils.AddAssemblyToCache(p); }); }
private void LoadPlugin(FileInfo file) { _logger.LogInformation($"Loading plugin name {file.Name}"); try { var assembly = Assembly.LoadFile(file.FullName); AssemblyUtils.AddAssemblyToCache(assembly); _pluginsAssemblies.Add(assembly); } catch (Exception ex) { _logger.LogError($"Error during loading plugin {file.Name} => {ex}"); } }
private async Task ScanPlugins() { _logger.LogInformation($"Scanning {_fileSystemManager.BuildFilePath(_neonConfig.Plugins.Directory)} for plugins"); var plugins = new DirectoryInfo(_fileSystemManager.BuildFilePath(_neonConfig.Plugins.Directory)).GetFiles("*.dll", SearchOption.AllDirectories); plugins.ToList().ForEach(LoadPlugin); //<PackageReference Include="Castle.Core" Version="4.4.0" /> //<PackageReference Include="Newtonsoft.Json" Version="12.0.2" /> //<PackageReference Include="MySql.Data" Version="8.0.17" /> // await DownloadDependecies(new List<PluginDependencyConfig>() // {new PluginDependencyConfig() {PackageName = "MySql.Data", PackageVersion = "8.0.17"}}); _logger.LogInformation($"Updating Assemblies"); _assembliesToLoad.ForEach(a => AssemblyUtils.AddAssemblyToCache(Assembly.LoadFile(a))); }