2016-06-17 2 views
6

Есть ли способ изменить настройки среды при развертывании приложения ASP.NET Core (например, преобразование конфигурационных файлов с использованием сборки debug/release)?Как справляться с различиями в среде при развертывании основного приложения asp.net?

Что было бы лучшим подходом для поддержки нескольких параметров среды в приложениях .NET Core (что-то похожее на <appSettings file="local.config"> для локального, промежуточного и производственного)?

ответ

11

Центральный файл конфигурации - appsettings.json, и у вас может быть несколько файлов, таких как appsettings.Production.json и т. Д., Которые будут загружены и переопределены с помощью настроек appsettings.json.

Например

 // Set up configuration sources. 
     var builder = new ConfigurationBuilder() 
      .SetBasePath(hostEnv.ContentRootPath) 
      .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) 
      .AddJsonFile($"appsettings.{hostEnv.EnvironmentName}.json", optional: true, reloadOnChange: true) 
      .AddEnvironmentVariables(); 

Все, что вам нужно, чтобы получить эту работу является переменной средой для установки типа среды (см документации here).

У вас также могут быть переменные окружения, которые переопределяют, если вы добавите AddEnvironmentVariables() в конфигуратор. Так что если у вас есть appsettings.json из

{ 
    "Data" { 
     "Default" { 
       "ConnectionString" : "..." 
     } 
    } 
} 

и хотите переопределить с помощью переменной окружения, вы бы установить переменную окружения под названием «Данные: По умолчанию: ConnectionString», и это значение переопределяет настройки в appsettings.config и appsettings.Production.config со значением из переменной среды.

Подробнее вы можете найти в официальной документации here.

+0

Это имеет смысл, но как бы вы переключались между средами при развертывании? Как динамически изменять значение hostEnv.EnvironmentName при развертывании в dev/staging/production? Спасибо. –

+1

Просто установите переменную. В Windows 'setx Hosting: Environment Staging' или' export Hosting__Environment = Staging' (обратите внимание на двойное подчеркивание!) В Linux. Удостоверьтесь, что у вас есть вызов AddEnvironmentVariables() при создании конфигурации, иначе он не будет работать. – Tseng

+0

Спасибо. Где я могу найти документацию (ссылки на некоторые статьи или блоги) по этой теме? –