Konfiguration von C#-Anwendungen (.NET): Microsoft.Extensions.Configuration

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ändige Anleitung



Die Verwaltung der Konfiguration ist eine der zentralen Aufgaben bei der Entwicklung moderner Anwendungen in C# (.NET). Die Bibliothek Microsoft.Extensions.Configuration bietet einen leistungsstarken und flexiblen Mechanismus zum Lesen von Einstellungen aus verschiedenen Quellen: JSON-Dateien, Umgebungsvariablen, Befehlszeilenargumenten und Geheimnissen. In diesem Artikel werden wir im Detail besprechen, wie Sie die Konfiguration in .NET-Anwendungen unter Verwendung bewährter Methoden und Codebeispiele einrichten.



Hauptfunktionen der Bibliothek



  • Mehrere Datenquellen: JSON, XML, INI, Umgebungsvariablen, Befehlszeilenargumente, Azure Key Vault und andere.
  • Hierarchische Struktur: Unterstützung für verschachtelte Abschnitte durch Schlüssel mit Doppelpunkt (Section:Subsection:Key).
  • Bindung an Klassen (Options Pattern): automatisches Befüllen von POCO-Objekten aus der Konfiguration.
  • Flexibles Überschreiben: Die zuletzt hinzugefügte Quelle hat Priorität.
  • Unterstützung für Geheimnisse: Für die Entwicklung — Secret Manager, für die Produktion — geschützte Speicher.


Installation und Einbindung



Um mit der Konfiguration in einer .NET-Anwendung (Konsolenanwendung, ASP.NET Core, MAUI usw.) zu arbeiten, muss das NuGet-Paket installiert werden:



dotnet add package Microsoft.Extensions.Configurationdotnet add package Microsoft.Extensions.Configuration.Jsondotnet add package Microsoft.Extensions.Configuration.EnvironmentVariablesdotnet add package Microsoft.Extensions.Configuration.CommandLine


In ASP.NET Core sind diese Pakete standardmäßig bereits enthalten.



Basisbeispiel: Lesen aus appsettings.json



Erstellen wir eine Datei appsettings.json:



{  "Logging": {    "LogLevel": {      "Default": "Information",      "Microsoft": "Warning"    }  },  "ConnectionStrings": {    "DefaultConnection": "Server=localhost;Database=MyDb;User Id=sa;Password=MyPass;"  },  "AppSettings": {    "AppName": "MyApp",    "Version": "1.0.0",    "MaxRetries": 3  }}


Code zum Lesen der Konfiguration in einer Konsolenanwendung:



using Microsoft.Extensions.Configuration;

class Program{ static void Main(string[] args) { // Konfiguration erstellen var configuration = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .AddEnvironmentVariables() .AddCommandLine(args) .Build();

// Einfache Werte lesen string appName = configuration["AppSettings:AppName"]; Console.WriteLine($"App Name: {appName}");

// Verschachtelte Abschnitte lesen string connString = configuration.GetConnectionString("DefaultConnection"); Console.WriteLine($"Connection String: {connString}");

// Ganze Zahl lesen int maxRetries = int.Parse(configuration["AppSettings:MaxRetries"]); Console.WriteLine($"Max Retries: {maxRetries}");

// Ganzen Abschnitt abrufen var appSettingsSection = configuration.GetSection("AppSettings"); Console.WriteLine($"Version: {appSettingsSection["Version"]}"); }}


Options-Muster (Bindung an Klassen)



Die beste Praxis ist die Verwendung einer stark typisierten Konfiguration über IOptions<T>. Dazu:



  1. Erstellen Sie eine Klasse für den Konfigurationsabschnitt:


public class AppSettings{    public string AppName { get; set; }    public string Version { get; set; }    public int MaxRetries { get; set; }}


  1. Registrieren Sie die Konfiguration im DI-Container (für ASP.NET Core oder mit Micros

Empfehlungen