Donnerstag, Mai 28, 2020

Wie kann ich sicherstellen, dass appsettings.dev.json ist, kopiert wird, um die Ausgabe-Ordner?

Habe ich drei Dateien, eine für jede Umgebung:

  1. appsettings.json -> Produktion
  2. appsettings.dev.json -> Entwicklung
  3. appsettings.stg.json -> Inszenierung

Wenn ich ASPNETCORE_ENVIRONMENT zu dev, bekomme ich eine exception zur Laufzeit, beschweren sich über nicht in der Lage zu finden, appsettings.dev.json. Ich habe versucht, das hinzufügen

"copyToOutput": [
  "appsettings.dev.json"
]

den buildOptions Abschnitt im Projekt.json-aber es scheint nicht zu haben keine Wirkung.

Gibt es einen anderen Weg kann ich Kraft appsettings.dev.json kopiert werden, um die Ausgabe-Verzeichnis?

  • Du hast eine Antwort von Ivan. Vielleicht ist es eine gute Idee, um anzugeben, ob das funktioniert für Sie?
  • Ich konnte Sie nicht finden, eine Lösung zum bereitstellen einer bestimmten Datei pro Umwelt. Sie können zum bereitstellen aller am Projekt*.json-Dateien –stackoverflow.com/questions/37858312/…, Aber das ist keine gute option, das perfekte Szenario ist die 1-zu-1-Datei-pro-Umgebung (configuration name) – die bounty ist offen 🙂
  • Siehe die Antwort für eine mögliche Lösung der Umwelt spezifische appsettings.
InformationsquelleAutor Alex G. | 2016-07-04

5 Kommentare

  1. 8

    In meinem Fall appsettings.json nicht kopiert werden für unit-tests.

    Wenn du mit rechts auf die Datei und wählen Sie “ Eigenschaften, diesen dialog kommen wird. Ändern Build Action zu Eingebettete Ressource und die Datei kopiert, in den Ordner bin für den unit-test zu Holen.

    Wie kann ich sicherstellen, dass appsettings.dev.json ist, kopiert wird, um die Ausgabe-Ordner?

  2. 7

    Haben Sie den Basis-Pfad, in dem appsettings.dev.json ist platziert?

    var builder = new ConfigurationBuilder()
        .SetBasePath(env.ContentRootPath)
        .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);
    • Dies wird verhindern, dass die Ausnahme wird geworfen, aber nicht die Frage beantworten, wie stellen Sie sicher, dass die .dev.json Datei kopiert wird.
    • .. Und überprüfen Sie Ihre .vscode/starten.json -> „cwd“ Weg. Diese Einstellung von „${workspaceRoot}“ auf „${workspaceRoot}\src\myproject“ für mich gearbeitet.
  3. 7

    Einschließlich dieser in “ – Projekt.json“ funktioniert für mich:

    ...
    "publishOptions": {
      "include": [
        "wwwroot",
         ...
        "appsettings.json",
        "appsettings.Development.json",
        ...
      ]
    },
    ...
    • Hat bei mir nicht funktioniert. Er arbeitete für eine Zeit, die Ursache-Projekt.json geändert wurde, und es führte zu Projekt neu zu erstellen. Einzige Lösung — rufen Sie wieder aufzubauen, anstatt zu bauen. Es funktioniert mit beiden Optionen kompilieren und publishOptions.
  4. 3

    In Projektmappen-explorer mit der der rechten Maustaste auf Ihre Datei möchte, kopiert die Ausgabe (in deinem Fall appsettings.dev.json) und Treffer Eigenschaften, Im Eigenschaften-Fenster eingestellt Copy To Output Directory option Immer Kopieren. Indem Sie dies tun, jedes mal, wenn Sie bauen Ihr Projekt, wird Ihre Datei kopiert werden in die Ausgabe-Verzeichnis (Projekt bin oder release Verzeichnis je nach Ihren build profile)

  5. 2

    Davon ausgegangen, dass Sie Visual Studio:

    In der Regel für Dienstleistungen, die in der Vergangenheit habe ich hatte andere devs set-up „Build Events“, die dafür sorgen, dass bestimmte Dinge im Projekt gebaut werden. Normalerweise wäre es in ASP.NET Projekteigenschaften für Visual Studio 2015 als Beispiel: > „Build Events“ (Links)>Klicken Sie auf ‚Edit Post-build‘. Schreiben Sie in die Befehlszeile-Anweisungen, wie Sie das Projekt aufbauen sollte, bis hin zur Ausgabe. EG:

    mkdir "$(ProjectDir)bin\Setup"  

    erstellen Sie ein Verzeichnis unter bin namens ‚Setup‘

    Del "$(ProjectDir)bin\Setup\*.* /Q"

    Löscht alle vorhandenen Elemente in die neu erstellte bin

    copy "$(TargetDir)*.dll"  "$(ProjectDir)bin\Setup"

    Kopien dll ‚ s aus dem build-Verzeichnis in das neue setup-Speicherort

    Nun, wenn Sie tun, einen build-Prozess, wo Ihr ‚Configuration Manager‘ macht einen anderen Ausgang für jede Umgebung und Sie wollen einfach nur, jeden von Ihnen zu allen Zeiten, die Sie würde wahrscheinlich Durchlaufen Ebene finden diese Behälter durch Ihre Namen ‚dev‘ oder ’stg‘ und dann kopieren Sie Sie zurück. Sie können in der Lage sein zu erstellen oder eine Liste einer Variablen, die VS weiß, für die Umwelt, die Streichhölzer, um Ihre JSON-Daten als auch.

Kostenlose Online-Tests