/// <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)); }
/// <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); }