Вы можете использовать переменные среды и ConfigurationBuilder
класс в своем Startup
конструкторе следующим образом:
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
this.configuration = builder.Build();
}
Затем вы создаете appsettings.xxx.json
файл для каждой нужной среды, где «xxx» является именем среды. Обратите внимание, что вы можете поместить все глобальные значения конфигурации в свой «нормальный» appsettings.json
файл, а в эти новые файлы поместить только специфические для среды данные.
Теперь вам нужна только переменная среды, вызываемая ASPNETCORE_ENVIRONMENT
с определенным значением среды ("live", "staging", "production", что угодно). Вы можете указать эту переменную в настройках вашего проекта для своей среды разработки, и, конечно же, вам необходимо также установить ее в промежуточной и производственной средах. То, как вы это сделаете, зависит от того, что это за среда.
ОБНОВЛЕНИЕ: я только что понял, что вы хотите выбрать, appsettings.xxx.json
исходя из вашей текущей конфигурации сборки . Этого нельзя достичь с помощью предлагаемого мной решения, и я не знаю, есть ли способ сделать это. Однако способ "переменной среды" работает и может быть хорошей альтернативой вашему подходу.