Ejemplo n.º 1
0
        /// <summary>
        /// Gets the plugin config section.
        /// </summary>
        /// <param name="pluginConfig">The plugin config.</param>
        /// <param name="pluginDir"></param>
        /// <param name="plugins"></param>
        /// <returns>An IConfiguration.</returns>
        private PluginOption GetPluginConfigSection(PluginConfig pluginConfig, string pluginDir, Plugins plugins)
        {
            var            dllName      = Path.GetFileNameWithoutExtension(pluginConfig.AssemblyName);
            IConfiguration configurtion = _applicationOption.Configuration?.GetSection(dllName);
            var            builder      = new ConfigurationBuilder();

            if (configurtion == null)
            {
                configurtion = _applicationOption.Configuration?.GetSection(pluginConfig.Key.ToString());
                if (configurtion != null)
                {
                    builder.AddConfiguration(configurtion);
                }
            }
            //查询插件中的配置文件 默认使用插件中的配置文件覆盖 主程序中的配置文件

            var pluginSettingEnvFile = GetPluginSettingFile();
            var pluginSettingFile    = "pluginSetting.json";
            var pluginSettingPath    = Path.Combine(pluginDir, pluginSettingFile);
            var pluginSettingEnvPath = Path.Combine(pluginDir, pluginSettingEnvFile);

            if (File.Exists(pluginSettingEnvPath))
            {
                builder.AddJsonFile(pluginSettingEnvPath);
            }
            if (File.Exists(pluginSettingPath))
            {
                builder.AddJsonFile(pluginSettingPath);
            }
            var configuration = builder.Build();

            return(new PluginOption(plugins, configuration));
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Sets the plugin values.
 /// </summary>
 /// <param name="pluginDir"></param>
 /// <param name="config">The config.</param>
 /// <param name="assembly">The assembly.</param>
 /// <param name="plugin">The plugin.</param>
 private void SetPluginValues(string pluginDir, PluginConfig config, Assembly assembly, ref Plugins plugin)
 {
     if (config == null)
     {
         throw new ArgumentException(nameof(PluginConfig));
     }
     plugin.Assembly        = assembly;
     plugin.AssemblyName    = config.AssemblyName;
     plugin.Author          = config.Author;
     plugin.DependencesKey  = config.DependencesKey;
     plugin.Key             = config.Key;
     plugin.Name            = config.Name;
     plugin.Version         = config.Version;
     plugin.Order           = config.Order;
     plugin.PluginDirectory = pluginDir;
     plugin.PluginOption    = GetPluginConfigSection(config, pluginDir, plugin);
 }