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:
- Unterschiedliche Umgebungen (
Development
undProduction
) basierend auf der Projektmappenkonfiguration (Debug/Release) verwenden. - 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:
- Wähle in Visual Studio das gewünschte Profil (z. B.
Development
oderProduction
) im Dropdown-Menü neben dem Start-Button aus. - 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