Configuração de aplicações C# (.NET): Guia completo da biblioteca Microsoft.Extensions.Configuration
Aplicações modernas em C# e .NET exigem gerenciamento flexível de configurações: strings de conexão com banco de dados, URLs de serviços externos, parâmetros de logging, etc. A biblioteca Microsoft.Extensions.Configuration fornece um mecanismo poderoso e unificado para trabalhar com configuração. Ela suporta múltiplas fontes de dados (JSON, XML, variáveis de ambiente, argumentos de linha de comando) e permite combiná-las em uma única hierarquia.
Principais recursos da biblioteca
- Mesclagem em vários níveis — configurações de diferentes fontes são combinadas em um único objeto.
- Prioridade de fontes — a última fonte adicionada substitui as anteriores.
- Vinculação a classes (Options pattern) — preenchimento automático de objetos POCO a partir da configuração.
- Atualização dinâmica — suporte para releitura de arquivos sem reiniciar a aplicação.
- Segurança — dados sensíveis podem ser movidos para variáveis de ambiente ou Azure Key Vault.
Uso básico: leitura de appsettings.json
Crie o arquivo appsettings.json na raiz do projeto:
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning" } }, "ConnectionStrings": { "DefaultConnection": "Server=localhost;Database=mydb;User Id=sa;Password=***;" }, "AppSettings": { "AppName": "MyApp", "MaxRetries": 3, "FeatureFlags": { "EnableNewUI": true, "EnableAnalytics": false } }}Carregue a configuração no código:
using Microsoft.Extensions.Configuration;
var configuration = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .Build();
// Leitura de valores simplesstring appName = configuration["AppSettings:AppName"];int maxRetries = int.Parse(configuration["AppSettings:MaxRetries"]);
// Leitura de seções aninhadasvar loggingSection = configuration.GetSection("Logging:LogLevel");string defaultLevel = loggingSection["Default"];
// Leitura de string de conexãostring connString = configuration.GetConnectionString("DefaultConnection");
Console.WriteLine($"Aplicação: {appName}, Retries: {maxRetries}");Prioridade e mesclagem de fontes
Você pode combinar várias fontes. Por exemplo, primeiro carregue o JSON, depois substitua parâmetros específicos por meio de variáveis de ambiente:
var config = new ConfigurationBuilder() .AddJsonFile("appsettings.json") .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) // para Development/Production .AddEnvironmentVariables() // variáveis de ambiente têm prioridade mais alta .AddCommandLine(args) // argumentos de linha de comando — prioridade máxima .Build();Vinculação a classes fortemente tipadas (Options Pattern)
Crie uma classe para a seção de configuração:
public class AppSettings{ public string AppName { get; set; } public int MaxRetries { get; set; } public FeatureFlags FeatureFlags { get; set; }}
public class FeatureFlags{ public bool EnableNewUI { get; set; } public bool EnableAnalytics { get; set; }}Em seguida, vincule-a no Program.cs usando o contêiner DI:
// Registro de serviçosbuilder.Services.Configure<AppSettings>( builder.Configuration.GetSection("AppSettings"));
// Uso em uma classe (por exemplo, em um controller)public class HomeController : Controller{ private readonly AppSettings _settings; public HomeController(IOpti Também na biblioteca
PM2 — Monitoramento de aplicações JavaScript (Node.js)
Validação de dados em PHP: guia completo com exemplos de código
Filas de Tarefas em Java: do ThreadPoolExecutor ao Disruptor
Aprendizado de Máquina em PHP: visão geral das bibliotecas para integração de ML
csv — Trabalhando com arquivos CSV em Rust