Ao usar um arquivo Settings.settings no .NET, onde a configuração é realmente armazenada? Quero excluir as configurações salvas para voltar ao estado padrão, mas não consigo encontrar onde estão armazenadas ... alguma ideia?
Ao usar um arquivo Settings.settings no .NET, onde a configuração é realmente armazenada? Quero excluir as configurações salvas para voltar ao estado padrão, mas não consigo encontrar onde estão armazenadas ... alguma ideia?
Respostas:
Depende se a configuração que você escolheu está no escopo "Usuário" ou no escopo "Aplicativo".
As configurações de escopo do usuário são armazenadas em
C: \ Documents and Settings \ nome de usuário \ Local Settings \ Application Data \ ApplicationName
Você pode ler / escrever no tempo de execução.
Para Vista e Windows 7, a pasta é
C: \ Users \ username \ AppData \ Local \ ApplicationName
ou
C: \ Users \ username \ AppData \ Roaming \ ApplicationName
As configurações de escopo do aplicativo são salvas AppName.exe.config
e somente leitura no tempo de execução.
Aqui está o snippet que você pode usar para obter a localização do arquivo user.config de maneira programática:
public static string GetDefaultExeConfigPath(ConfigurationUserLevel userLevel)
{
try
{
var UserConfig = ConfigurationManager.OpenExeConfiguration(userLevel);
return UserConfig.FilePath;
}
catch (ConfigurationException e)
{
return e.Filename;
}
}
ApplicationSettings (ou seja, settings.settings) usa PerUserRoamingAndLocal para as configurações do usuário por padrão (como me lembrei).
Atualização: Estranho, mas há muitas respostas incorretas aqui. Se você estiver procurando por seu arquivo de configurações com escopo de usuário (user.config), ele estará localizado na seguinte pasta (para Windows XP):
C: \ Documents and Settings \ (nome de usuário) \ Local Settings \ Application Data \ (company-name-if-exist) \ (app-name) .exe_ (Url | StrongName) _ (hash) \ (app-version) \
Url ou StrongName depende do seu nome forte do assembly do aplicativo ou não.
Supondo que você esteja falando sobre desktop e não aplicativos da web:
Quando você adiciona configurações a um projeto, o VS cria um arquivo nomeado app.config
no diretório do projeto e armazena as configurações nesse arquivo. Ele também cria o Settings.cs
arquivo que fornece os acessadores estáticos para as configurações individuais.
No momento da compilação, o VS irá (por padrão; você pode alterar isso) copiar o app.config
para o diretório de construção, alterando seu nome para corresponder ao executável (por exemplo, se o seu executável for nomeado foo.exe
, o arquivo será nomeado foo.exe.config
), que é o nome do. O gerenciador de configuração NET procura quando recupera as configurações em tempo de execução.
Se você alterar uma configuração por meio do editor de configurações do VS, ele atualizará app.config
e Settings.cs
. (Se você observar os acessadores de propriedade no código gerado no Settings.cs
, verá que eles estão marcados com um atributo contendo o valor padrão da configuração que está em seu app.config
arquivo.) Se você alterar uma configuração editando o app.config
arquivo diretamente, Settings.cs
não será atualizado, mas o novo valor ainda será usado por seu programa quando você executá-lo, porque app.config
é copiado foo.exe.config
em tempo de compilação. Se você desligar isso (definindo as propriedades do arquivo), você pode alterar uma configuração editando diretamente o foo.exe.config
arquivo no diretório de compilação.
Depois, há configurações de escopo do usuário.
As configurações do escopo do aplicativo são somente leitura. Seu programa pode modificar e salvar configurações de escopo do usuário, permitindo que cada usuário tenha suas próprias configurações. Essas configurações não são armazenadas no foo.exe.config
arquivo (já que no Vista, pelo menos, os programas não podem gravar em nenhum subdiretório ou Program Files
sem elevação); eles são armazenados em um arquivo de configuração no diretório de dados do aplicativo do usuário.
O caminho para esse arquivo é %appdata%\%publisher_name%\%program_name%\%version%\user.config
, por exemplo C:\Users\My Name\AppData\Local\My_Company\My_Program.exe\1.0.0\user.config
. Observe que se você deu ao seu programa um nome forte, o nome forte será anexado ao nome do programa neste caminho.
Ao navegar para descobrir o hash no nome da pasta, descobri (por meio desta resposta ):
http://blogs.msdn.com/b/rprabhu/archive/2005/06/29/433979.aspx
(editar: link Wayback Machine: https://web.archive.org/web/20160307233557/http://blogs.msdn.com:80/b/rprabhu/archive/2005/06/29/433979.aspx )
O caminho exato dos
user.config
arquivos é semelhante a este:
<Profile Directory>\<Company Name>\<App Name>_<Evidence Type>_<Evidence Hash>\<Version>\user.config
Onde
<Profile Directory>
- é o diretório do perfil móvel ou local. As configurações são armazenadas por padrão nouser.config
arquivo local . Para armazenar uma configuração nouser.config
arquivo de roaming , você precisa marcar a configuração comSettingsManageabilityAttribute
comSettingsManageability
definido comoRoaming
.
<Company Name>
- é tipicamente a string especificada peloAssemblyCompanyAttribute
(com a ressalva de que a string é escapada e truncada conforme necessário e, se não for especificada na montagem, temos um procedimento de fallback).
<App Name>
- é normalmente a string especificada peloAssemblyProductAttribute
(mesmas ressalvas que para o nome da empresa).
<Evidence Type>
e<Evidence Hash>
- informações derivadas da evidência de domínio de aplicativo para fornecer domínio de aplicativo adequado e isolamento de assembly.
<Version>
- normalmente a versão especificada noAssemblyVersionAttribute
. Isso é necessário para isolar diferentes versões do aplicativo implantado lado a lado.O nome do arquivo é sempre simplesmente '
user.config
'.
Ele está em uma pasta com o nome do seu aplicativo na pasta Application Data na pasta home do usuário (C: \ documents and settings \ user no xp e c: \ users \ user no Windows Vista).
Existem algumas informações aqui também.
PS: - tente acessá-lo por% appdata% na caixa de execução!
Erm, você não pode simplesmente usar Settings.Default.Reset () para restaurar suas configurações padrão?
Todas as suas configurações são armazenadas no respectivo arquivo .config.
O arquivo .settings simplesmente fornece uma classe fortemente tipada para um conjunto de configurações que pertencem juntas, mas as configurações reais são armazenadas em app.config ou um arquivo .config em seu aplicativo.
Se você adicionar um arquivo .settings, um app.config será adicionado automaticamente para abrigar as configurações se você ainda não tiver um.
Se o seu arquivo de configurações estiver em um aplicativo da web, eles estarão no arquivo web.config (logo abaixo do seu projeto. Se eles estiverem em qualquer outro tipo de projeto, eles estarão no arquivo app.config (também abaixo do seu projeto) .
Editar
Como é apontado nos comentários: as configurações do aplicativo em tempo de design estão em um arquivo app.config para aplicativos que não sejam da web. Quando você constrói, o arquivo app.config é copiado para o diretório de saída e será nomeado yourexename .exe.config. Em tempo de execução, apenas o arquivo chamado yourexename.exe.config será lido.
Dois arquivos: 1) Um arquivo app.config ou web.config. As configurações dela podem ser personalizadas após construir com um editor de texto. 2) O arquivo settings.designer.cs. Este arquivo tem código gerado automaticamente para carregar a configuração do arquivo de configuração, mas um valor padrão também está presente caso o arquivo de configuração não tenha a configuração específica.
Eu sei que já foi respondido, mas você não poderia simplesmente sincronizar as configurações no designer de configurações para voltar às configurações padrão?