private static IConfigurationBuilder AddFileConfiguration(BuildContext buildContext, IConfigurationBuilder builder) { //todo: use IBuildContext var startupConfiguration = buildContext.StartupConfiguration; var configurationPath = startupConfiguration.ConfigurationPath; var configurationProfile = startupConfiguration.Profile; if (configurationPath != null) { // Базовый путь для чтения конфигураций var configurationBasePath = Path.IsPathRooted(configurationPath) ? configurationPath : Path.Combine(AppDomain.CurrentDomain.BaseDirectory, configurationPath); if (!Directory.Exists(configurationBasePath)) { throw new Exception($"ConfigurationBasePath ${configurationBasePath} doesn't exists"); } buildContext.AddBuildInfo("ConfigurationBasePath", configurationBasePath); // Добавляем файлы из корня конфигурации, переопределяем конфигурацию профильными конфигами builder = builder.AddConfigurationFiles(configurationBasePath); if (!string.IsNullOrEmpty(configurationProfile)) { var dirs = configurationProfile.PathNormalize().Split(Path.DirectorySeparatorChar, '.'); var cumulativePath = configurationBasePath.PathNormalize(); string profileDirectory = string.Empty; foreach (var dir in dirs) { // Путь к профильной конфигурации var subProfileDirectory = Path.Combine(cumulativePath, dir); cumulativePath = subProfileDirectory; if (Directory.Exists(subProfileDirectory)) { profileDirectory = subProfileDirectory; // Переопределяем конфигурацию профильными конфигами builder = builder.AddConfigurationFiles(subProfileDirectory); } } buildContext.AddBuildInfo("ConfigurationProfileDirectory", profileDirectory); } } return(builder); }
/// <summary> /// Добавление всех конфигурационных файлов в конфигурацию. /// В выборку попадают все xml и json файлы. /// </summary> /// <param name="builder">ConfigurationBuilder в который добавляются конфигурации.</param> /// <param name="configurationPath">Директория для поиска файлов конфигурации.</param> /// <returns>Итоговый ConfigurationBuilder.</returns> public static IConfigurationBuilder AddConfigurationFiles(this IConfigurationBuilder builder, string configurationPath) { return(builder.AddConfigurationFiles(configurationPath, new[] { "*.json", "*.xml" })); }
public static IConfigurationBuilder AddConfigurationFiles([NotNull] this IConfigurationBuilder thisValue, [NotNull] IWebHostEnvironment environment) { return(thisValue.AddConfigurationFiles(environment.ContentRootPath, environment.EnvironmentName)); }