Configuração de aplicações C# (.NET): bibliotecas e ferramentas

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

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


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

  1. appsettings.json — configurações básicas.
  2. appsettings.{Environment}.json — configurações para um ambiente específico (Development, Production).
  3. Environment Variables — sobrescrita para CI/CD e Docker.
  4. 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

Recommendations