Example #1
0
        private void InitialPluginManager()
        {
            try
            {
                foreach (var asm in AppDomain.CurrentDomain.GetAssemblies())
                {
                    asm.GetTypes();
                }

                //var path = Path.Combine(Directory.GetCurrentDirectory(), PluginFolder);
                var path = Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase
                                        ?? AppDomain.CurrentDomain.BaseDirectory,
                                        PluginFolder);
                _logger.Information("[PluginManager] Plugins now load from path: [{path}]", path);

                var folder = Directory.GetDirectories(path);
                foreach (var item in folder)
                {
                    try
                    {
                        _logger.Information(LogConsts.SingleLine);
                        var pathSplit = GetSplitPath(item);

                        _logger.Information("[PluginManager] Load Plugin Folder: {folder}", pathSplit[^ 1]);
                        Assembly pluginAssembly = LoadPlugin(item);

                        var plugins = CreateCommands(pluginAssembly).ToList();
                        Plugin.AddRange(plugins);

                        _logger.Information("[PluginManager] Loaded Plugin: {pluginName}", plugins?.FirstOrDefault()?.PluginName);
                    }