Configuración de aplicaciones C# (.NET): guía completa
La configuración es uno de los aspectos clave en el desarrollo de aplicaciones modernas en C# (.NET). Permite separar los parámetros de funcionamiento del programa del código, haciendo que la aplicación sea flexible, portable y segura. En este artículo, analizaremos en detalle la biblioteca Microsoft.Extensions.Configuration, la herramienta principal para gestionar la configuración en .NET Core y .NET 5/6/7/8+.
¿Por qué es necesaria la configuración?
En lugar de cadenas de conexión, URLs o claves API escritas directamente en el código, la configuración permite almacenar estos datos en archivos (JSON, XML, INI), variables de entorno o secretos. Esto simplifica el despliegue en diferentes entornos (dev, staging, prod) y mejora la seguridad.
Componentes principales de la biblioteca
- IConfiguration — interfaz que representa un árbol unificado de configuraciones.
- IConfigurationBuilder — constructor que recopila la configuración desde diversas fuentes.
- ConfigurationRoot — objeto raíz que implementa
IConfiguration. - Source Providers — proveedores de datos: JSON, XML, INI, Environment Variables, Command Line, Memory, Custom.
Instalación de la biblioteca
La biblioteca forma parte del SDK de .NET, por lo que en la mayoría de los proyectos no se requiere instalación adicional. Sin embargo, para trabajar con archivos JSON en aplicaciones de consola, es necesario agregar el paquete:
dotnet add package Microsoft.Extensions.Configuration.JsonEjemplo básico: lectura desde appsettings.json
Creemos un archivo appsettings.json:
{ "AppSettings": { "SiteName": "PythonLib", "Version": "1.0", "Logging": { "Level": "Information", "File": "logs/app.log" } }}Ahora lo leeremos en una aplicación de consola:
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}"); }}Uso de múltiples fuentes
Una de las principales ventajas de Microsoft.Extensions.Configuration es el soporte para cadenas de fuentes. La última fuente agregada tiene la prioridad más alta. Una cadena típica:
appsettings.json— configuración base.appsettings.{Environment}.json— configuración para un entorno específico (Development, Production).Environment Variables— sobrescritura para CI/CD y Docker.Command Line Arguments— para sobrescrituras temporales al iniciar.
Ejemplo de configuración de la cadena:
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);Trabajo con secciones y configuración fuertemente tipada
Para mayor comodidad, se pueden vincular las secciones de configuración con clases POCO. Definamos la clase:
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 También en la biblioteca
Procesamiento de imágenes en Node.js: resize y crop con Sharp
Trabajo con YAML en C# (.NET): bibliotecas y ejemplos de uso
Event Bus y el patrón Observer en TypeScript: implementación y ejemplos
Generación de informes PDF en JavaScript (Node.js): Resumen de bibliotecas y ejemplos de código
Monitoreo de Node.js: herramientas y bibliotecas para rastrear el rendimiento