No desenvolvimento de aplicações C#, o uso de Settings.settings permite gerenciar configurações persistentes. Este artigo aborda como configurar, salvar e recuperar valores, além de solucionar falhas comuns após o empacotamento e instalação do software.
Propriedade Scope
A propriedade Scope em Settings.settings define a abrangência das configurações:
- User: Nível do usuário, permitindo leitura e escrita em tempo de execução. As alterações são salvas e mantidas durante a execução da aplicação.
- Application: Nível da aplicação, somente leitura. Os valores são obtidos a partir do arquivo
App.confige não podem ser modificados durante a execução.
Definição, Salvamento e Recuperação de Valores
Para manipular configurações, utiliza-se a classe Properties.Settings.Default. Abaixo, um exemplo simplificado com variáveis renomeadas para maior clareza:
// Método para salvar configurações ao clicar no botão de confirmação
private void SavePreferences_Click(object sender, EventArgs e)
{
Properties.Settings.Default.IsChecked = chkEnableOption.Checked;
Properties.Settings.Default.InputText = txtUserData.Text;
Properties.Settings.Default.Save();
}
// Método para carregar configurações ao iniciar a interface
private void LoadPreferences_Click(object sender, EventArgs e)
{
chkEnableOption.Checked = Properties.Settings.Default.IsChecked;
txtUserData.Text = Properties.Settings.Default.InputText;
}
// Método para redefinir configurações para valores padrão
private void ResetSettings_Click(object sender, EventArgs e)
{
Properties.Settings.Default.IsChecked = false;
Properties.Settings.Default.InputText = string.Empty;
Properties.Settings.Default.Save();
}
Local de Armazenamento
As configurações com Scope definido como User são salvas no diretório do sistema: C:\Users\[NomeDoUsuario]\AppData\Local\[NomeDaEmpresa]\[NomeDoPrograma]\[Versao]. Esse local é gerenciado automaticamente pelo .NET Framework.
Relação entre Settings.settings e App.config
Configurações de escopo User seguem um ciclo de leitura específico:
- Primeira execução: Os valores iniciais são lidos a partir do arquivo
App.config, caso não existam registros salvos no sistema. - Após salvar: Após chamar o método
Save(), os valores são persistidos no sistema operacional e passam a ser carregados desse local. - Em memória: Ao iniciar a aplicação, a instância de
Settingscarrega os valores na memória, priorizando os dados salvos no sistema.
O método Reset() pode ser usado para resaturar os valores a partir do App.config, ignorando as alterações salvas.
Solução para Falhas de Início Pós-Instalação
Ao empacotar aplicações com ferramentas como o Visual Studio Installer, é comum enfrentar problemas de inicialização se as configurações não forem tratadas adequadamente. Um erro típico ocorre quando uma coleção de configurações retorna null.
Exemplo de código problemático:
// Inicialização inadequada pode causar exceção se o valor for nulo
var collectionData = new StringCollection();
collectionData = Properties.Settings.Default.CollectionValues;
Solução: Inicializar a coleção com um valor padrão antes da atribuição para evitar referências nulas:
// Garante que a coleção não seja nula após a leitura
var collectionData = new StringCollection { "" };
collectionData = Properties.Settings.Default.CollectionValues;
Essa abordgaem previne falhas silenciosas, onde a aplicação não abre sem exibir erros, comum em ambientes fora do depurador do Visual Studio.