Если вы хотите, чтобы ваш процесс развертывания идемпотент, я бы предложил использовать этот шаг развертывания для установки в Azure Web App.
https://marketplace.visualstudio.com/items?itemName=pascalnaber.PascalNaber-Xpirit-WebAppConfiguration
Технически это добавляет параметры высвобождения в web.config, а также, что не является необходимым для основного приложения, но, что важно, он также устанавливает переменные среды для хоста Azure.
условия, что вы указали использовать переменные окружения в вашем Startup.cs:
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables(); //override settings with environment variables
var config = builder.Build();
Configuration = config;
}
Итак, если у вас есть переменная выпуска: appsetting.ASPNETCORE_ENVIRONMENT = Release, вы обнаружите, что $ ENV: ASPNETCORE_ENVIRONMENT действительно будет «Release», если вы проверяете консоль PowerShell на Kudu.
Я использую это расширение, чтобы переопределить все мои переменные appsettings.json, а также ASPNETCORE_ENVIRONMENT во время релиза, а не tokenzing некоторые настройки appsettings. {Environment} .json. Я могу просто переопределить переменные среды, используя правильное соглашение об именах в своих именах VSTS Release Variable.
Например, если мой appsettings.json имеет такую структуру:
{
settings: {
secret: {
foo: "bar"
}
}
}
можно переопределить с переменным высвобождением, такие как:
appsetting.settings: секрет: Foo = "bar"
Затем перейдите в систему $ env: settings: secret: foo в Azure Web App после развертывания
Не делая ничего лишнего в моем источнике или не убирая пакет развертывания сети, подписывая файл конфигурации, а затем повторно зацикливая до msdeploy, у меня есть настройки, зависящие от среды.
Итак, вы хотите обновить значение переменной «ASPNETCORE_ENVIRONMENT» в файле «launchSettings.json» до его развертывания? –
Вид да. Я пытаюсь передать то, что я пытаюсь сделать. В принципе, при настройке задачи сборки (или задачи выпуска) в vsts, я хочу установить переменную ASPNETCORE_ENVIRONMENT в этой точке, поэтому при ее развертывании она по существу является «правильной» средой. в основном, вроде того, как web.config преобразует работу. Имеет ли это смысл? –
Его также вполне возможно, что я смотрю на это совершенно неправильно. Учитывая @set s ответ ниже, мне интересно, должен ли я настраивать сайт с переменной среды, предварительно сконфигурированной, и просто использовать для этого. –