Configuração de aplicações C# (.NET): guia completo
A configuração é um dos aspectos-chave no desenvolvimento de aplicações modernas em C# (.NET). Ela permite separar os parâmetros de funcionamento do programa do código, tornando a aplicação flexível, portátil e segura. Neste artigo, vamos detalhar a biblioteca Microsoft.Extensions.Configuration — a principal ferramenta para gerenciamento de configuração no .NET Core e .NET 5/6/7/8+.
Por que a configuração é necessária?
Em vez de strings de conexão, URLs ou chaves de API fixas no código, a configuração permite armazenar esses dados em arquivos (JSON, XML, INI), variáveis de ambiente ou segredos. Isso simplifica a implantação em diferentes ambientes (dev, staging, prod) e aumenta a segurança.
Componentes principais da biblioteca
- IConfiguration — interface que representa uma árvore única de configurações.
- IConfigurationBuilder — construtor que monta a configuração a partir de várias fontes.
- ConfigurationRoot — objeto raiz que implementa
IConfiguration. - Source Providers — provedores de dados: JSON, XML, INI, Environment Variables, Command Line, Memory, Custom.
Instalação da biblioteca
A biblioteca faz parte do .NET SDK, portanto, para a maioria dos projetos, não é necessária instalação adicional. No entanto, para trabalhar com arquivos JSON em aplicações de console, é necessário adicionar o pacote:
dotnet add package Microsoft.Extensions.Configuration.JsonExemplo básico: leitura de appsettings.json
Vamos criar o arquivo appsettings.json:
{ "AppSettings": { "SiteName": "PythonLib", "Version": "1.0", "Logging": { "Level": "Information", "File": "logs/app.log" } }}Agora, vamos lê-lo em uma aplicação de console:
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últiplas fontes
Uma das principais vantagens do Microsoft.Extensions.Configuration é o suporte a cadeias de fontes. A última fonte adicionada tem a maior prioridade. Uma cadeia típica:
appsettings.json— configurações básicas.appsettings.{Environment}.json— configurações para um ambiente específico (Development, Production).Environment Variables— sobrescrita para CI/CD e Docker.Command Line Arguments— para sobrescritas temporárias na inicialização.
Exemplo de configuração da cadeia:
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);Trabalho com seções e configuração fortemente tipada
Para maior conveniência, é possível vincular seções de configuração a classes POCO. Vamos definir a classe:
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 Também na biblioteca
Monitoramento de aplicações TypeScript: bibliotecas, ferramentas e configuração
Geração Swagger/OpenAPI para C++: visão geral de ferramentas e bibliotecas
Pimple para PHP: guia completo do container DI
Monitoramento de aplicações Rust: biblioteca tracing e métricas