Configuración de aplicaciones C# (.NET): bibliotecas y herramientas

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 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.Json


Ejemplo 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:

  1. appsettings.json — configuración base.
  2. appsettings.{Environment}.json — configuración para un entorno específico (Development, Production).
  3. Environment Variables — sobrescritura para CI/CD y Docker.
  4. 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

Recommendations