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

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

Recommendations