Wenn Sie den Bereitstellungsvorgang für idempotent halten möchten, sollten Sie diesen Bereitstellungsschritt für die Azure Web App verwenden.
https://marketplace.visualstudio.com/items?itemName=pascalnaber.PascalNaber-Xpirit-WebAppConfiguration
Technisch fügt es Release-Einstellungen auf die web.config als auch, was für eine Kern App nicht notwendig ist, aber wichtiger ist, es setzt auch die Umgebungsvariablen für den Host-Azure.
Vorausgesetzt, Sie haben festgelegt, in Ihrem Startup.cs Umgebungsvariablen verwenden:
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;
}
Wenn Sie also eine Release Variable: appsetting.ASPNETCORE_ENVIRONMENT = Freigabe, werden Sie feststellen, dass $ env: ASPNETCORE_ENVIRONMENT wird in der Tat sein "Release", wenn Sie über die PowerShell-Konsole auf Kudu prüfen.
Ich benutze tatsächlich diese Erweiterung, um alle meine appsettings.json Variablen sowie ASPNETCORE_ENVIRONMENT zum Release-Zeit zu überschreiben, anstatt einige appsettings. {Umgebung} .json Datei. Ich kann einfach mit Umgebungsvariablen überschreiben, indem ich die richtige Benennungskonvention in meinen VSTS Release-Variablennamen verwende.
Zum Beispiel, wenn meine appsettings.json hat diese Struktur:
{
settings: {
secret: {
foo: "bar"
}
}
}
I mit einer Trenn Variable außer Kraft setzen kann, wie:
appsetting.settings: Geheimnis: foo = "bar"
Dann überprüfen Sie $ env: settings: secret: foo auf der Azure Web App nach der Bereitstellung
Ohne etwas in meiner Quelle zu tun oder ein Web-Deployment-Paket zu entpacken, eine Konfigurationsdatei zu Token und dann vor Msdeploy erneut zu zippen, habe ich umgebungsspezifische Konfigurationen.
Sie möchten also den Wert der Variablen "ASPNETCORE_ENVIRONMENT" in der Datei "launchSettings.json" aktualisieren, bevor Sie sie bereitstellen? –
Art von ja. Ich bemühe mich zu vermitteln, was ich versuche zu tun. Wenn ich eine Build-Task (oder eine Release-Task) in vsts einrichte, möchte ich im Grunde die Variable ASPNETCORE_ENVIRONMENT an diesem Punkt einstellen, so dass sie bei ihrer Implementierung im Wesentlichen die "richtige" Umgebung ist. im Grunde genommen, wie die web.config-Transformationen funktionieren. Ist das sinnvoll? –
Es ist auch durchaus möglich, dass ich das völlig falsch anschaue. Wenn ich die @set-Antwort unten anführe, frage ich mich, ob ich die Site mit der vorkonfigurierten Umgebungsvariablen einrichten soll und einfach dafür bereitstellen soll. –