Configuración de aplicaciones C# (.NET): Microsoft.Extensions.Configuration

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Configuración de aplicaciones C# (.NET): guía completa



La gestión de la configuración es una de las tareas clave en el desarrollo de aplicaciones modernas en C# (.NET). La biblioteca Microsoft.Extensions.Configuration proporciona un mecanismo potente y flexible para leer ajustes de diversas fuentes: archivos JSON, variables de entorno, argumentos de línea de comandos y secretos. En este artículo, analizaremos en detalle cómo configurar la configuración en aplicaciones .NET, utilizando las mejores prácticas y ejemplos de código.



Características principales de la biblioteca



  • Múltiples fuentes de datos: JSON, XML, INI, variables de entorno, argumentos de línea de comandos, Azure Key Vault y otros.
  • Estructura jerárquica: soporte para secciones anidadas mediante claves con dos puntos (Section:Subsection:Key).
  • Vinculación a clases (Options Pattern): llenado automático de objetos POCO desde la configuración.
  • Anulación flexible: la última fuente agregada tiene prioridad.
  • Soporte para secretos: para desarrollo — Secret Manager, para producción — almacenes seguros.


Instalación y configuración



Para trabajar con configuración en una aplicación .NET (consola, ASP.NET Core, MAUI, etc.), es necesario instalar el paquete NuGet:



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


En ASP.NET Core, estos paquetes ya están incluidos por defecto.



Ejemplo básico: lectura desde appsettings.json



Creemos un archivo 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  }}


Código para leer la configuración en una aplicación de consola:



using Microsoft.Extensions.Configuration;

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

// Lectura de valores simples string appName = configuration["AppSettings:AppName"]; Console.WriteLine($"App Name: {appName}");

// Lectura de secciones anidadas string connString = configuration.GetConnectionString("DefaultConnection"); Console.WriteLine($"Connection String: {connString}");

// Lectura de un número entero int maxRetries = int.Parse(configuration["AppSettings:MaxRetries"]); Console.WriteLine($"Max Retries: {maxRetries}");

// Obtener una sección completa var appSettingsSection = configuration.GetSection("AppSettings"); Console.WriteLine($"Version: {appSettingsSection["Version"]}"); }}


Patrón Options (vinculación a clases)



La mejor práctica es usar configuración fuertemente tipada mediante IOptions<T>. Para ello:



  1. Cree una clase para la sección de configuración:


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


  1. Registre la configuración en el contenedor DI (para ASP.NET Core o usando Micros

Recommendations