Gewusst wie: veröffentlichen der Umgebung appsettings in .Netto-Kern-app?
Ich habe 3 von der Umgebung appsettings
Dateien in meine .Net-core-Anwendung
in project.json
ich habe setup publishOptions
wie diese. ( basierend auf dem Vorschlag hier)
"publishOptions": {
"include": [
"wwwroot",
"appsettings.development.json",
"appsettings.staging.json",
"appsettings.production.json",
"web.config"
]
},
Ich habe 3 entsprechenden Start-Klassen, die verwendet geeignete appsettings
basierend auf Umwelt
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: false, reloadOnChange: true);
Jedoch veröffentlicht, wenn ich die Anwendung dann alle 3 appsettings-Dateien am Ende in allen Umgebungen. Wie Veröffentliche ich von der Umgebung " appsetting-Datei?
- Kann mir bitte jemand diese Frage beantworten. Es ist wirklich nicht sinnvoll, zu veröffentlichen appsettings.json-Dateien, um alle Umgebungen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eine Möglichkeit wäre, zu laufen prepublish oder postpublic Skripte/Befehle, zum Beispiel, indem Sie einen Schluck Aufgabe ausführen
dotnet publish-iis
(alternativ auch eine Aufgabe inprepublish
Abschnittscripts
um die Dateien zu kopieren, um die vor der Veröffentlichung.Fügen Sie diese zu Ihrem Projekt.json:
Können Sie auch ausführen ein cmd oder shell-Befehl hier. Aber eigentlich sollte es keine Gründe, warum Sie möchten, um es in den ersten Platz, knapp Schiff alle 3 appconfig-Dateien, da auf d.h. Azure App Service Sie können den Modus wechseln, je nach Umgebungsvariablen das ist geregelt über das Azure-Portal und bei der Veröffentlichung, die staging-und Produktions-slots werden nur getauscht, aber die Umgebungsvariablen bleiben.
Sollten Sie nicht speichern Sie die Geheimnisse innerhalb der appsettings.json obwohl (die ich nehme an, Sie doe und der Grund, warum Sie wollen, um die Dateien zu entfernen). Verwenden Sie statt dessen "Geheimnisse der Benutzer" für die Entwicklung und den Umwelt-Variablen zu setzen-Verbindungszeichenfolgen etc. für die Produktion ist. Funktioniert wie ein Charme, vor allem mit Azure App Services-und docker-Containern.
Wenn jemand fragt, wie man verschiedene appsettings für mehrere Umgebungen, hier ist eine mögliche Lösung.
dotnet publish --configuration [Debug|Release]
wird, kopieren Sie die entsprechenden appsettings.json Datei in den Ordner veröffentlichen, wenn*.csproj
hat eine bedingte Logik für diese Dateien:.pubxml
veröffentlichen-Profil-Datei (zu finden inProperties
->PublishProfiles
von Visual Studio) deaktivieren, dass alle content-Dateien sind standardmäßig enthaltenStartup.cs
versuchen, laden Sie beide DateienIch hoffe, dass diese Lösung hilfreich gewesen.
In VS2017 Hinzufügen mehrerer Umwelt
Schritte
rechts klicken Sie auf Projekt --> Hinzufügen --> newitem verwendet - wählen Sie die json-Datei schreiben-Datei-Namen wie 'appsettings.die Inszenierung.json' oder 'appsettings.Produktion.json'
Hinzufügen appsettings.die Inszenierung.json-Datei
Sieht die Ausgabe folgendermaßen aus
Vor kurzem hatte ich eine Lösung finden, die für diese als gut, und ich habe es vollbracht, indem Sie einige Einstellungen zu den
.csproj
- Datei und eine geringfügige änderungProgram.cs
.Erklären es ein wenig, ich habe eine
<EnvironmentName>
- element für jede Konfiguration, so kann es verwendet werden, während des build-Prozesses. Ich bin mitappsettings.{EnvironmentName}.json
(d.h.appsettings.Staging.json
) nur als "overrides" - Datei, damit ich Sie benennen die notwendigen JSON-Datei während des Buildprozesses. Beim ausführendotnet publish -c Stage
zum Beispiel veröffentlicht dieappsettings.Staging.json
- Datei in den Ordner veröffentlichen und benennen Sie es umappsettings.overrides.json
. In IhremProgram.cs
Sie gerade brauchen, um dasappsettings.overrides.json
- Datei:Ich hoffe, es hilft!
--ouput
Pfad, den Sie angeben. Erwartest du, dass eine einzelneappsettings.json
- Datei in das Ausgabeverzeichnis? Mit der Lösung, die ich gepostet, Sie wird immer 2 appsettings-Dateien. Ein Wesenappsettings.json
wird und zum anderenappsettings.overrides.json
. Es sollte mit den "override" - Einstellungen (d.h. vonappsettings.Staging.json
) und der Umbenennung es zuappsettings.overrides.json
in das Ausgabe-Verzeichnis. Vielleicht kannst du posten, was du tust, als eine Frage und ich kann Ihnen helfen, die Antwort zu finden?$(PublishDir)
. Sie sollten in der Lage sein, Sie zu ersetzen$(OutputPath)\publish
in die Lösung gab ich mit$(PublishDir)
und es sollte das tun, was du bist suchen für. Ich habe auch aktualisiert, die Antwort zu verwenden$(PublishDir)
statt, da ist es besser, zu verwenden, so kann es Unterstützung--output
. Vielen Dank, dass Sie bis!Die Sie brauchen, um tatsächlich fügen Sie die Umgebungsvariablen, nach dem offiziellen tutorial:
Ehrlich gesagt, ich denke, das ist nicht die richtige Aufgabe für einen build-pipeline. Auch die publishing-Funktionen der dotnet-cli sind sehr begrenzt. Gehen Sie zu externe tools wie Tseng zeigte Sie. Deployment ist eine weitere domain mit einem eigenen Satz von Komplexität als Gebäude.
Es ist nicht ein Aufbau in der Weise auf dotnet cli über externe tools!
Die einfachste Möglichkeit, die ich bis jetzt gefunden habe ist die Bereitstellung aller config-Dateien und entfernen Sie dann die zusätzlichen Dateien, die, nachdem die Bereitstellung abgeschlossen ist.
Fügen Sie einfach einige zusätzliche Zeilen am Ende der Bereitstellung von shell-oder batch-Skript.
Können Sie MSBuild-Bedingungen, Optional auch Dateien der Zusammenstellung der Ausgabe (oder Ausgabe).
Den oben ignoriert die Entwicklung und Inszenierung appsettings.json-Datei-Varianten, wenn die Zusammenstellung target-Konfigurations-Release.
Löste ich diese Frage mit diesem nuget-Paket: https://github.com/Microsoft/slow-cheetah/blob/master/doc/transforming_files.md
Es ist so einfach für die installation und die Verwendung aller Konfigurationen in Active solution configuration (In meinem Fall - habe ich ein neues "Test" - Konfiguration für test-Implementierung).
Danach können Sie installieren diese Erweiterung in der VS: https://marketplace.visualstudio.com/items?itemName=vscps.SlowCheetah-XMLTransforms.
Einfach erstellen Sie jetzt eine neue config-Dateien für .xml-oder .json-Anwendung Konfiguration-Einstellungen in VS, die von diesem tool (wie im manual). Zum Beispiel, ich habe die Debug -, Test -, Release-Dateien (appsettings.Debug.json und etc.)
Nächsten Schritt - das einrichten der profile für jede Konfiguration und nach der Veröffentlichung müssen Sie nur eine Datei mit allen notwendigen Transformationen.
Transformationen funktioniert wie ein Klassiker .json envinronment transormation in .net-core-web-Anwendungen.