101 votes

Lorsque vous utilisez un fichier Settings.settings dans .NET, où la configuration est-elle réellement stockée ?

Lorsque vous utilisez un fichier Settings.settings dans .NET, où la configuration est-elle réellement stockée ? Je veux supprimer les paramètres enregistrés pour revenir à l'état par défaut, mais je n'arrive pas à trouver où ils sont stockés... une idée ?

102voto

SolutionYogi Points 16697

Cela dépend si le paramètre que vous avez choisi se situe au niveau de l'utilisateur ou de l'application.

Portée de l'utilisateur

Les paramètres du champ d'application de l'utilisateur sont stockés dans

C:\\Documents and Settings\\ **username** \\Local Settings\\Application Data\\ **ApplicationName**

Vous pouvez les lire/écrire au moment de l'exécution.

Pour Vista et Windows 7, le dossier est

C:\\Users\\ **username** \\AppData\\Local\\ **ApplicationName**

ou

C:\\Users\\ **username** \\AppData\\Roaming\\ **ApplicationName**

Champ d'application

Les paramètres du champ d'application sont enregistrés dans AppName.exe.config et ils sont en lecture seule au moment de l'exécution.

20 votes

Le dossier pour les paramètres de l'utilisateur sous Vista et Win7 est le suivant C:\Users\username\AppData\Local\ApplicationName\Publisher\Ap Nom de la demande \Versio n ou C:\Users\username\AppData\Roaming\ApplicationName\Publisher\ Nom de l'application \Vers ion en fonction de la valeur de la propriété Roaming dans le volet Paramètres.

4 votes

Sauf s'il s'agit d'un addin, auquel cas il s'agira de AppName.dll.config.

4 votes

Mon user.config local sous Windows 7 se trouve à l'adresse suivante C:\Users\ <nom d'utilisateur> \AppData\Local\Publisher\ApplicationName_ Eid_EvidenceHash \Ver sion

53voto

arbiter Points 5503

Voici l'extrait que vous pouvez utiliser pour obtenir de manière programmatique l'emplacement du fichier user.config :

public static string GetDefaultExeConfigPath(ConfigurationUserLevel userLevel)
{
  try
  {
    var UserConfig = ConfigurationManager.OpenExeConfiguration(userLevel);
    return UserConfig.FilePath;
  }
  catch (ConfigurationException e)
  {
    return e.Filename;
  }
}

ApplicationSettings (c'est-à-dire settings.settings) utilise par défaut PerUserRoamingAndLocal pour les paramètres utilisateur (si je me souviens bien).

Mise à jour : C'est étrange mais il y a trop de mauvaises réponses ici. Si vous cherchez le fichier de paramètres de l'utilisateur (user.config), il se trouve dans le dossier suivant (pour Windows XP) :

C:\Documents et Paramètres (nom d'utilisateur) \Local Paramètres \Application Données (nom de l'entreprise s'il existe) (nom de l'application).exe_(Url|Nom Fort)_(hash)_(version de l'application).

Url ou StrongName dépend de l'assemblage du nom fort de votre application ou non.

0 votes

Une idée de ce qui contribue au hachage dans ce chemin ? Chaque version ultérieure de mon application obtient une valeur de hachage différente, ce qui rend futile l'appel à ApplicationSettingsBase.Upgrade() :/

2 votes

Le hachage est le hachage SHA1 du StrongName lorsque l'application est signée ou du path lorsque l'application est non signée. Plus d'informations ici msdn.microsoft.com/fr/us/library/ms379611(v=vs.80).aspx

20voto

Robert Rossney Points 43767

En supposant que vous parlez d'applications de bureau et non d'applications web :

Lorsque vous ajoutez des paramètres à un projet, VS crée un fichier nommé app.config dans le répertoire de votre projet et stocke les paramètres dans ce fichier. Il construit également le fichier Settings.cs qui fournit les accesseurs statiques aux paramètres individuels.

Au moment de la compilation, VS copiera (par défaut ; vous pouvez le changer) le fichier app.config dans le répertoire de construction, en changeant son nom pour qu'il corresponde à celui de l'exécutable (par exemple, si votre exécutable s'appelle foo.exe le fichier sera nommé foo.exe.config ), qui est le nom que le gestionnaire de configuration .NET recherche lorsqu'il récupère les paramètres au moment de l'exécution.

Si vous modifiez un paramètre par le biais de l'éditeur de paramètres VS, il sera mis à jour à la fois app.config y Settings.cs . (Si vous regardez les accesseurs de propriété dans le code généré dans la section Settings.cs vous verrez qu'ils sont marqués d'un attribut contenant la valeur par défaut du paramètre qui se trouve dans votre fichier de configuration. app.config fichier). Si vous modifiez un paramètre en éditant le fichier app.config directement, Settings.cs ne sera pas mis à jour, mais la nouvelle valeur sera toujours utilisée par votre programme lorsque vous l'exécuterez, car app.config est copié dans foo.exe.config au moment de la compilation. Si vous désactivez cette fonction (en définissant les propriétés du fichier), vous pouvez modifier un paramètre en éditant directement le fichier foo.exe.config dans le répertoire de construction.

Ensuite, il y a les paramètres définis par l'utilisateur.

Les paramètres de l'application sont en lecture seule. Votre programme peut modifier et enregistrer les paramètres de l'application utilisateur, permettant ainsi à chaque utilisateur de disposer de ses propres paramètres. Ces paramètres ne sont pas stockés dans la base de données foo.exe.config (puisque sous Vista, au moins, les programmes ne peuvent pas écrire dans un sous-répertoire du fichier Program Files sans élévation) ; ils sont stockés dans un fichier de configuration dans le répertoire de données de l'application de l'utilisateur.

Le chemin d'accès à ce fichier est %appdata%\%publisher_name%\%program_name%\%version%\user.config par exemple C:\Users\My Name\AppData\Local\My_Company\My_Program.exe\1.0.0\user.config . Notez que si vous avez donné un nom fort à votre programme, ce nom fort sera ajouté au nom du programme dans ce chemin.

1 votes

Il semble que le composant My_Company du chemin d'accès sera par défaut Microsoft. Je n'ai pas encore trouvé de moyen de changer cela qui fonctionne réellement, si quelqu'un le sait, ce serait bien de l'ajouter.

1 votes

User565869, avez vous essayé dans visual studio, ouvrez l'onglet application de la propriété du projet, cliquez sur le bouton information sur l'assemblage et vous devriez alors pouvoir changer Company ? répétez cela pour chaque projet de votre solution

3voto

Kildareflare Points 623

Erm, ne pouvez-vous pas simplement utiliser Settings.Default.Reset() pour restaurer vos paramètres par défaut ?

1voto

Praveen Angyan Points 6232

Tous vos paramètres sont stockés dans le fichier .config correspondant.

Le fichier .settings fournit simplement une classe fortement typée pour un ensemble de paramètres qui vont ensemble, mais les paramètres réels sont stockés dans app.config ou dans un fichier .config de votre application.

Si vous ajoutez un fichier .settings, un app.config sera automatiquement ajouté pour accueillir les paramètres si vous n'en avez pas déjà un.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X