Wert von ASPNETCORE_ENVIRONMENT auf den Wert einer anderen Umgebungsvariable setzen

aspnet-core
Tags: #<Tag:0x00007fb1c098e148>

#1

In der Datei “launchSettings.json” könnt Ihr konfigurieren, welchen Wert für ASPNETCORE_ENVIRONMENT gesetzt wird. Das geht sowohl direkt mit einem Texteditor oder auch über die Projekteinstellungen in Visual Studio.

Ich wollte das noch etwas auf die Spitze treiben:

Wir haben Projekte, bei denen unterschiedliche Entwickler am Projekt (via SVN/GIT) verteilt entwickeln. Ich wollte für jeden Entwickler eine eigene Anwendungskonfigurationsdatei “appsettings.json” haben.

Also bin ich so vorgegangen:

  1. In der “launchSettings.json”-Datei die Umgebungsvariable ASPNETCORE_ENVIRONMENT auf den Wert einer anderen Umgebungsvariable setzen:

    "ASPNETCORE_ENVIRONMENT": "%USERNAME%"
    

    %USERNAME% ist in diesem Fall eine automatisch von Windows gesetzte Umgebungsveriable mit dem jeweils angemeldeten Windows-Nutzer. Beispielsweise “ukeim” oder “jdoe” oder “mmueller”.

    Ihr könnt Euch über die Befehlszeile (“DOS-Box”) anzeigen lassen, wie die aktuellen Umgebungsvariablen lauten, indem Ihr einfach set gefolgt von der Eingabetaste eingebt.

  2. Pro Entwickler eine weitere “appsettings.json”-Datei anlegen. Der Dateiname entspricht dabei dem Muster der schon vorhandenen Datei “appsettings.Development.json”.

    Also beispielsweise “appsettings.ukeim.json”, “appsettings.jdoe.json” oder “appsettings.mmueller.json”.

  3. In der Datei “Startup.cs”, Methode Configure entsprechend die Prüfung auf Development-Umgebung ergänzen. Also z. B. vorher:

    if (env.IsDevelopment())
    {
        // ...
    

    und nachher:

    if (env.IsDevelopment() || 
        env.IsEnvironment(@"ukeim") || 
        env.IsEnvironment(@"jdoe") || 
        env.IsEnvironment(@"mmueller"))
    {
        // ...
    
  4. In den Razor-Sichten, die auch die Umgebung prüfen (bei mir war das z. B. die Datei “_Layout.cshtml”) die zusätzlichen Umgebungen ergänzen. Also z. B. vorher:

    <environment names="Development">
        ...
    

    und nachher:

    <environment names="Development,ukeim,jdoe,mmueller">
        ...
    

    Achtung, das kann an mehreren Stellen in mehreren .CSHTML-Dateien der Fall sein.

Anschließend konnte ich erfolgreich meine Umgebung für mich persönlich automatisch selektieren lassen.