Visão geral das configurações do aplicativo
Este artigo descreve como criar e armazenar dados de configurações em nome do seu aplicativo e seus usuários.
O recurso Configurações do Aplicativo do Windows Forms facilita a criação, o armazenamento e a manutenção de preferências personalizadas do aplicativo e do usuário no computador cliente. Com as configurações do aplicativo Windows Forms, você pode armazenar não apenas dados do aplicativo, como cadeias de conexão de banco de dados, mas também dados específicos do usuário, como preferências do aplicativo do usuário. Usando o Visual Studio ou código gerenciado personalizado, você pode criar novas configurações, lê-las e gravá-las no disco, vinculá-las a propriedades em seus formulários e validar dados de configurações antes de carregar e salvar.
As configurações do 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 definições da aplicação incluem muitas melhorias em relação às propriedades dinâmicas, que são apenas de leitura, vinculadas de forma atrasada e exigem programação personalizada adicional. 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 do aplicativo
Seus aplicativos do Windows Forms geralmente exigem dados que são 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, convém armazenar essas informações em um arquivo separado, para que você possa alterá-las 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 do usuário que personalizam a aparência e o comportamento do aplicativo.
As configurações do aplicativo atendem a ambas as necessidades, fornecendo uma maneira fácil de armazenar as configurações do escopo do aplicativo e do 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. Uma vez definidas, essas configurações são mantidas e lidas de volta na memória automaticamente em tempo de execução. Uma arquitetura conectá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 persistindo dados como XML para diferentes arquivos de configuração (.config), correspondendo a se a configuração tem escopo de aplicativo ou escopo de usuário. Na maioria das vezes, as configurações do escopo do aplicativo são somente leitura; uma vez que são informações do programa, normalmente não será necessário substituí-las. Por outro lado, as configurações do escopo do usuário podem ser lidas e gravadas com segurança em tempo de execução, mesmo que seu aplicativo seja executado sob confiança parcial. Para obter mais informações sobre confiança parcial, consulte Visão geral da segurança no Windows Forms.
As configurações são armazenadas como fragmentos XML em arquivos de configuração. As definições de escopo da aplicação são representadas pelo elemento <applicationSettings>
e são geralmente colocadas no .exe.configda aplicação, onde da aplicação é o nome do seu ficheiro executável principal. As configurações de escopo do usuário são representadas pelo elemento <userSettings>
e colocadas em user.config. Você deve implantar o arquivo .exe.config com a sua aplicação; a arquitetura de configurações criará o arquivo user.config sob demanda na primeira vez que o aplicativo salvar as configurações para esse usuário. Você também pode definir um bloco de <userSettings>
dentro do aplicativo .exe.config para fornecer valores padrão para configurações com escopo de utilizador.
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 Windows Forms implementa essa interface para salvar a posição das barras de ferramentas e itens da barra de ferramentas entre as sessões do aplicativo. Para obter mais informações sobre controles personalizados e configurações de aplicativos, consulte Configurações do aplicativo para controles personalizados.
Onde as configurações do escopo do usuário são guardadas
O provedor padrão, LocalFileSettingsProvider, armazena as configurações do escopo do usuário na pasta LocalApplicationData. Se essa pasta não estiver disponível, a pasta ApplicationData será usada. Uma subpasta específica da aplicação é criada para armazenar o ficheiro de configurações específicas do utilizador. O nome desta pasta é baseado em três características sobre a montagem principal da aplicação:
- O Número CompanyNameda assembleia.
- Um valor em hash baseado em duas informações:
- O FriendlyNameda assembleia. Se
FriendlyName
não estiver disponível, o ProductName será usado. - O StrongName da montagem, se disponível, caso contrário, será utilizado o caminho absoluto da pasta para a montagem.
- O FriendlyNameda assembleia. Se
- A sequência AssemblyName.Version.
Se qualquer um dos detalhes do assembly anterior mudar, as configurações anteriores com foco no utilizador serão perdidas, porque 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 do escopo do usuário será alterado. 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.
No momento, você não pode vincular a algumas propriedades no Windows Forms. O exemplo mais notável é a propriedade ClientSize, pois a vinculaçã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 nenhum recurso interno para criptografar informações automaticamente. Você nunca deve armazenar informações relacionadas à segurança, como senhas de banco de dados, em texto não criptografado. Se você quiser armazenar essas informações confidenciais, você, como desenvolvedor do aplicativo, é responsável por garantir que elas sejam seguras. Se pretender armazenar cadeias de ligação, recomendamos que utilize a Segurança Integrada do Windows e não recorra a palavras-passe codificadas no 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 utilizar o Visual Studio, pode definir configurações no Windows Forms Designer usando a propriedade (ApplicationSettings) na janela 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 se encarrega de vincular 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 é exibido e salvas automaticamente quando o formulário é fechado.
Se você quiser um controle mais detalhado sobre suas configurações, você pode 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 de wrapper, consulte Application Settings Architecture.
Você também pode usar a classe Binding para vincular configurações programaticamente a propriedades em formulários e controles.
Ver também
- ApplicationSettingsBase
- SettingsProvider
- LocalFileSettingsProvider
- IPersistComponentSettings
- Como: Validar configurações do aplicativo
- Gerenciando configurações do aplicativo (.NET)
- Como: Ler configurações em tempo de execução com C#
- Usando as configurações da aplicação e as configurações do usuário
- Arquitetura das Configurações da Aplicação
- Configurações do aplicativo para controles personalizados
.NET Desktop feedback