コード例 #1
0
        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!");
            }
        }
コード例 #2
0
 private void LoadPlugins()
 {
     _pluginsAssemblies.Values.ToList().ForEach(p =>
     {
         _logger.Debug($"Adding {p.GetName().Name} to assemblies cache");
         AssemblyUtils.AddAssemblyToCache(p);
     });
 }
コード例 #3
0
        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}");
            }
        }
コード例 #4
0
        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)));
        }