Visual Studio

Wie man die Laufzeitumgebung mittels launchsettings.json konfiguriert

Wir kompilieren eine Debug- oder eine Releaseversion. Haben eine Entwicklungs- und eine Produktionsumgebung. Kestrel und IIS (Express). Adressieren MSSQLLocalDB und MS-SQL Server. Und müssen trotz Konfigurationsdateien manuell umschalten. Oder etwa doch nicht? Kann VS das nicht automatisch?

Admin 25.01.25
Visual StudioEntwicklung
Wie man die Laufzeitumgebung mittels launchsettings.json konfiguriert

Wie man die Umgebungen (Environment) in ASP.NET Core mittels launchSettings.json steuert

In diesem Artikel wird erklärt, wie Umgebungen in einer ASP.NET Core-Anwendung durch die Datei launchSettings.json gesteuert werden können. Dabei wird insbesondere auf zwei Lösungswege eingegangen: die Steuerung durch explizite Profile sowie die automatische Steuerung durch Projektmappenkonfigurationen (Debug/Release).


Was ist launchSettings.json?

Die Datei launchSettings.json steuert die Startkonfigurationen einer ASP.NET Core-Anwendung, wenn diese über Visual Studio oder dotnet CLI ausgeführt wird. Sie definiert:

  • Profile: Verschiedene Startoptionen (z. B. für Entwicklung, Produktion, IIS Express).
  • Umgebungen: Setzt die Umgebungsvariable ASPNETCORE_ENVIRONMENT.
  • URLs: Gibt an, welche HTTP- und HTTPS-URLs verwendet werden sollen.
  • Browserverhalten: Bestimmt, ob ein Browser automatisch gestartet wird.

Problemstellung

In einer Blazor Server-App oder ASP.NET Core-Anwendung möchtest du:

  1. Unterschiedliche Umgebungen (Development und Production) basierend auf der Projektmappenkonfiguration (Debug/Release) verwenden.
  2. Sicherstellen, dass automatisch der Browser mit der entsprechenden URL geöffnet wird.

Lösungsweg 1: Umgebungssteuerung durch Profile in launchSettings.json

Die Datei launchSettings.json erlaubt die Definition mehrerer Profile, die manuell über Visual Studio ausgewählt werden können. Jedes Profil setzt die Umgebungsvariable ASPNETCORE_ENVIRONMENT auf den gewünschten Wert.

Beispiel: Struktur von launchSettings.json


{
  "$schema": "http://json.schemastore.org/launchsettings.json",
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:65148",
      "sslPort": 44345
    }
  },
  "profiles": {
    "Development": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "applicationUrl": "https://localhost:5001;http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "Production": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "applicationUrl": "https://localhost:5001;http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Production"
      }
    }
  }
}
  

Verwendung:

  1. Wähle in Visual Studio das gewünschte Profil (z. B. Development oder Production) im Dropdown-Menü neben dem Start-Button aus.
  2. Starte die Anwendung. Der Browser öffnet sich automatisch mit der in applicationUrl angegebenen Adresse, und die entsprechende Umgebung wird verwendet.

Vorteile:

  • Klare Trennung zwischen Umgebungen.
  • Flexibel anpassbar.

Nachteile:

  • Manuelles Umschalten zwischen den Profilen notwendig.

Lösungsweg 2: Automatische Umgebungssteuerung durch Projektmappenkonfiguration

Wenn du möchtest, dass die Umgebung automatisch basierend auf der Projektmappenkonfiguration (Debug oder Release) gesetzt wird, kannst du dies über Präprozessor-Direktiven oder die .csproj-Datei lösen.

1. Präprozessor-Direktiven im Code

Im Program.cs kannst du Präprozessor-Direktiven verwenden, um die Umgebung dynamisch zu setzen:


var builder = WebApplication.CreateBuilder(args);

#if DEBUG
builder.Configuration["ASPNETCORE_ENVIRONMENT"] = "Development";
#else
builder.Configuration["ASPNETCORE_ENVIRONMENT"] = "Production";
#endif

// Debugausgabe der aktiven Umgebung
Console.WriteLine($"Aktive Umgebung: {builder.Configuration["ASPNETCORE_ENVIRONMENT"]}");

var app = builder.Build();
app.Run();
  

Mit der Zeile Console.WriteLine kannst du in der Konsole überprüfen, welche Umgebung tatsächlich aktiv ist. Dies ist hilfreich für Debugging-Zwecke.

Vorteile:

  • Kein manuelles Umschalten nötig.
  • Automatische Steuerung basierend auf der Projektmappenkonfiguration.

Nachteile:

  • Weniger flexibel, wenn mehr als zwei Umgebungen benötigt werden.

2. Steuerung über die .csproj-Datei

Die .csproj-Datei kann so konfiguriert werden, dass Umgebungsvariablen basierend auf der Projektmappenkonfiguration gesetzt werden:



  Development


  Production

  

Im Program.cs liest du diese Umgebungsvariable aus:


var environmentName = builder.Configuration["EnvironmentName"];
if (!string.IsNullOrEmpty(environmentName))
{
    builder.Environment.EnvironmentName = environmentName;
}

// Debugausgabe der aktiven Umgebung
Console.WriteLine($"Aktive Umgebung: {builder.Environment.EnvironmentName}");

var app = builder.Build();
app.Run();
  

Auch hier sorgt die Debugausgabe dafür, dass du jederzeit die aktive Umgebung überprüfen kannst.

Vorteile:

  • Automatische und saubere Trennung zwischen Debug und Release.

Nachteile:

  • Zusätzlicher Konfigurationsaufwand.

Zusammenfassung

Ansatz Vorteile Nachteile
Profile in launchSettings.json Einfache Handhabung, flexible Anpassung Manuelles Umschalten erforderlich
Projektmappenkonfiguration Automatisch, keine manuelle Auswahl Weniger flexibel, zusätzlicher Aufwand

Empfehlung

  • Für manuelle Steuerung: Nutze Profile in launchSettings.json.
  • Für automatisierte Workflows: Steuere das Environment über die Projektmappenkonfiguration.

Beide Ansätze ermöglichen eine klare Trennung der Umgebungen und sorgen dafür, dass deine Anwendung korrekt für Development oder Production konfiguriert ist.


Entwicklungshandbuch > Visual Studio

© JW 2025 | Stand: 26.01.2025

Mehr zum Thema

Kompilierzeiten in Visual Studio verkürzen

Lange Kompilierzeiten in Visual Studio können die Produktivität von Entwicklern erheblich beeinträchtigen. Dies gilt insbesondere bei größeren Projekten, bei denen jede Sekunde zählt. In diesem Blogpost zeige ich, wie man die Kompilierzeiten verkürzt, indem bestimmte Dateien vom Virenscan ausgeschlossen werden. Darüber hinaus werden weitere Techniken zur Optimierung der Entwicklungsumgebung vorgestellt.

Admin 24.10.24
Anmeldung zum Newsletter
Erhalte Infos zu neuen Inhalten und Aktionen in unregelmäßiger Folge direkt in deinen Posteingang. Es ist kostenlos und du kannst dich jederzeit abmelden. Keine Sorge, ich hasse Spam genauso wie du: also spamme ich nicht!
An unhandled error has occurred. Reload 🗙