Konfiguration von C#-Anwendungen (.NET): Bibliotheken und Tools

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Konfiguration von C#-Anwendungen (.NET): Vollständiger Leitfaden



Die Konfiguration ist einer der wichtigsten Aspekte bei der Entwicklung moderner C#-Anwendungen (.NET). Sie ermöglicht es, Programmparameter vom Code zu trennen, wodurch die Anwendung flexibel, portabel und sicher wird. In diesem Artikel werden wir die Bibliothek Microsoft.Extensions.Configuration im Detail behandeln – das wichtigste Werkzeug zur Konfigurationsverwaltung in .NET Core und .NET 5/6/7/8+.



Wozu dient die Konfiguration?

Anstatt Verbindungszeichenfolgen, URLs oder API-Schlüssel fest im Code zu hinterlegen, ermöglicht die Konfiguration die Speicherung dieser Daten in Dateien (JSON, XML, INI), Umgebungsvariablen oder Geheimnissen. Dies vereinfacht die Bereitstellung in verschiedenen Umgebungen (Dev, Staging, Prod) und erhöht die Sicherheit.



Hauptkomponenten der Bibliothek

  • IConfiguration – Schnittstelle, die einen einheitlichen Einstellungsbaum darstellt.
  • IConfigurationBuilder – Builder, der die Konfiguration aus verschiedenen Quellen zusammenstellt.
  • ConfigurationRoot – Stammobjekt, das IConfiguration implementiert.
  • Source Providers – Datenanbieter: JSON, XML, INI, Environment Variables, Command Line, Memory, Custom.


Installation der Bibliothek

Die Bibliothek ist Bestandteil des .NET SDK, daher ist für die meisten Projekte keine zusätzliche Installation erforderlich. Für die Arbeit mit JSON-Dateien in Konsolenanwendungen muss jedoch das folgende Paket hinzugefügt werden:

dotnet add package Microsoft.Extensions.Configuration.Json


Basisbeispiel: Lesen aus appsettings.json

Erstellen wir eine Datei appsettings.json:

{  "AppSettings": {    "SiteName": "PythonLib",    "Version": "1.0",    "Logging": {      "Level": "Information",      "File": "logs/app.log"    }  }}


Nun lesen wir sie in einer Konsolenanwendung ein:

using Microsoft.Extensions.Configuration;

class Program{ static void Main() { var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);

IConfiguration config = builder.Build();

string siteName = config["AppSettings:SiteName"]; string logLevel = config["AppSettings:Logging:Level"];

Console.WriteLine($"Site: {siteName}, Log Level: {logLevel}"); }}


Verwendung mehrerer Quellen

Einer der Hauptvorteile von Microsoft.Extensions.Configuration ist die Unterstützung von Quellenketten. Die zuletzt hinzugefügte Quelle hat die höchste Priorität. Eine typische Kette:

  1. appsettings.json – Basiseinstellungen.
  2. appsettings.{Environment}.json – Einstellungen für eine bestimmte Umgebung (Development, Production).
  3. Environment Variables – Überschreibung für CI/CD und Docker.
  4. Command Line Arguments – für temporäre Überschreibungen beim Start.


Beispiel für die Konfiguration einer Kette:

var builder = new ConfigurationBuilder()    .SetBasePath(Directory.GetCurrentDirectory())    .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)    .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", optional: true)    .AddEnvironmentVariables()    .AddCommandLine(args);


Arbeit mit Abschnitten und stark typisierte Konfiguration

Zur Vereinfachung können Konfigurationsabschnitte mit POCO-Klassen verknüpft werden. Definieren wir eine Klasse:

public class AppSettings{    public string SiteName { get; set; }    public string Version { get; set; }    public LoggingSettings Logging { get; set; }}

public class LoggingSettings{ public string Level { get; set; } public string File

Empfehlungen