Visão geral das configurações do aplicativo
Este artigo discute como criar e armazenar dados de configurações em nome de seu aplicativo e de seus usuários.
O recurso Configurações de Aplicativo do Windows Forms facilita a criação, armazenamento e manutenção de preferências personalizadas de aplicativo e usuário no computador cliente. Com as configurações de aplicativo do Windows Forms, você pode armazenar não apenas dados de aplicativo, como cadeias de conexão de banco de dados, mas também dados específicos do usuário, como preferências de aplicativo do usuário. Usando o Visual Studio ou o código gerenciado personalizado, você pode criar novas configurações, lê-las e gravá-las em disco, associá-las a propriedades em seus formulários e validar dados de configurações antes de carregar e salvar.
As configurações de aplicativo permitem que os desenvolvedores salvem o estado em seu aplicativo usando muito pouco código personalizado e é uma substituição para propriedades dinâmicas em versões anteriores do .NET Framework. As configurações de aplicativo contêm muitos aprimoramentos com relação às propriedades dinâmicas, que são somente leitura, têm associação tardia e exigem mais programação personalizada. As classes de propriedade dinâmica foram mantidas no .NET Framework 2.0, mas são apenas classes de shell que encapsulam as classes de configurações do aplicativo.
O que são configurações de aplicativo
Seus aplicativos do Windows Forms geralmente exigem dados críticos para executar o aplicativo, mas que você não deseja incluir diretamente no código do aplicativo. Se seu aplicativo usa um serviço Web ou um servidor de banco de dados, talvez você queira armazenar essas informações em um arquivo separado, para que você possa alterá-la no futuro sem recompilar. Da mesma forma, seus aplicativos podem exigir o armazenamento de dados específicos para o usuário atual. A maioria dos aplicativos, por exemplo, tem preferências de usuário que personalizam a aparência e o comportamento do aplicativo.
As configurações de aplicativo abordam ambas as necessidades fornecendo uma maneira fácil de armazenar configurações com escopo de aplicativo e com escopo de usuário no computador cliente. Usando o Visual Studio ou um editor de código, você define uma configuração para uma determinada propriedade especificando seu nome, tipo de dados e escopo (aplicativo ou usuário). Você pode até mesmo colocar configurações relacionadas em grupos nomeados para facilitar o uso e a legibilidade. Depois de definidas, essas configurações são mantidas e lidas novamente na memória automaticamente em tempo de execução. Uma arquitetura plugável permite que o mecanismo de persistência seja alterado, mas, por padrão, o sistema de arquivos local é usado.
As configurações do aplicativo funcionam ao persistir os dados como XML em arquivos de configuração distintos (.config), dependendo se a configuração é de escopo do aplicativo ou do usuário. Na maioria dos casos, as configurações de escopo do aplicativo são somente leitura. Como elas são informações sobre o programa, normalmente você não precisará substituí-las. Por outro lado, as configurações com escopo de usuário podem ser lidas e gravadas com segurança em tempo de execução, mesmo que seu aplicativo seja executado sob permissões parciais. Para obter mais informações sobre a confiança parcial, consulte Security in Windows Forms Overview.
As configurações são armazenadas como fragmentos XML em arquivos de configuração. Configurações com escopo do aplicativo são representadas pelo elemento <applicationSettings>
e geralmente são colocadas em app.exe.config, em que app é o nome do seu arquivo executável principal. As configurações no escopo do usuário são representadas pelo elemento <userSettings>
dentro do aplicativo .exe.config para fornecer valores padrão para configurações destinadas ao usuário.
Os controles personalizados também podem salvar suas próprias configurações implementando a interface IPersistComponentSettings, que expõe o método SaveSettings. O controle ToolStrip do Windows Forms implementa essa interface para salvar a posição de barras de ferramentas e itens da barra de ferramentas entre sessões de aplicativo. Para obter mais informações sobre controles personalizados e configurações de aplicativo, consulte Configurações do aplicativo para controles personalizados.
Onde estão armazenadas as configurações de escopo do usuário?
O provedor padrão, LocalFileSettingsProvider, armazena configurações com escopo de usuário na pasta LocalApplicationData. Se essa pasta não estiver disponível, a pasta ApplicationData será usada. Uma subpasta específica do aplicativo é criada para armazenar o arquivo de configurações específicas para o usuário. O nome dessa pasta baseia-se em três atributos sobre o assembly principal do aplicativo:
- O CompanyName do assembly.
- Um valor hash derivado de duas informações.
- O FriendlyName do assembly. Se
FriendlyName
não estiver disponível, o ProductName será usado. - O StrongName do assembly, se disponível; caso contrário, o caminho absoluto da pasta para o assembly será usado.
- O FriendlyName do assembly. Se
- A cadeia de caracteres AssemblyName.Version.
Se qualquer um dos detalhes do assembly anterior for alterado, as configurações específicas do usuário serão perdidas por causa de um novo nome de subpasta gerado. Por exemplo, se uma nova versão do aplicativo for lançada e o valor AssemblyName.Version
for diferente da versão anterior, o nome da subpasta usada para armazenar as configurações no escopo do usuário muda. Se as configurações do usuário precisarem persistir entre as versões do aplicativo, crie um provedor de configurações personalizado. Para obter mais informações, consulte Provedores de Configurações Personalizadas.
Limitações das configurações do aplicativo
Você não pode usar configurações de aplicativo em um aplicativo não gerenciado que hospeda o .NET Framework. As configurações não funcionarão em ambientes como suplementos do Visual Studio, C++ para Microsoft Office, hospedagem de controle no Internet Explorer ou suplementos e projetos do Microsoft Outlook.
Atualmente, não é possível associar a algumas propriedades nos Windows Forms. O exemplo mais notável é a propriedade ClientSize, pois a associação a essa propriedade causaria um comportamento imprevisível em tempo de execução. Normalmente, você pode contornar esses problemas salvando e carregando essas configurações programaticamente.
As configurações do aplicativo não têm nenhuma instalação interna para criptografar informações automaticamente. Você nunca deve armazenar informações relacionadas à segurança, como senhas de banco de dados, em texto claro. Se você quiser armazenar essas informações confidenciais, você, como desenvolvedor de aplicativos, será responsável por garantir que elas sejam seguras. Se você quiser armazenar cadeias de conexão, recomendamos que você use a Segurança Integrada do Windows e não recorra a senhas de codificação rígida na URL. Para obter mais informações, consulte Segurança de Acesso ao Código e ADO.NET.
Introdução às Configurações do Aplicativo
Se você usar o Visual Studio, poderá definir configurações dentro do Designer de Formulários do Windows usando a propriedade (ApplicationSettings) na janela de Propriedades. Quando você define as configurações dessa maneira, o Visual Studio cria automaticamente uma classe de wrapper gerenciada personalizada que associa cada configuração a uma propriedade de classe. O Visual Studio também cuida de associar a configuração a uma propriedade em um formulário ou controle para que as configurações do controle sejam restauradas automaticamente quando seu formulário for exibido e salvo automaticamente quando o formulário for fechado.
Se você quiser um controle mais detalhado sobre suas configurações, poderá definir sua própria classe de wrapper de configurações de aplicativos personalizados. Isso é feito derivando uma classe de ApplicationSettingsBase, adicionando uma propriedade que corresponde a cada configuração e aplicando atributos especiais a essas propriedades. Para obter detalhes sobre como criar classes wrapper, consulte Application Settings Architecture.
Você também pode usar a classe Binding para associar configurações programaticamente a propriedades em formulários e controles.
Consulte também
- ApplicationSettingsBase
- SettingsProvider
- LocalFileSettingsProvider
- IPersistComponentSettings
- Como validar as configurações do aplicativo
- gerenciamento de configurações de aplicativo (.NET)
- Como Ler Configurações em Tempo de Execução com C#
- Usando configurações do aplicativo e configurações do usuário
- arquitetura de configurações do aplicativo
- Configurações do Aplicativo para Controles Personalizados
.NET Desktop feedback