web-dev-qa-db-fra.com

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 souhaite supprimer les paramètres enregistrés pour revenir à l'état par défaut, mais je ne trouve pas où il est stocké… ​​des idées?

93
Adam Haile

Cela dépend si le paramètre que vous avez choisi se situe dans la portée "Utilisateur" ou "Application".

Portée de l'utilisateur

Les paramètres de portée de l'utilisateur sont stockés dans

C:\Documents and Settings \ username \ Paramètres locaux\Données d'application \ Nom de l'application

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

Pour Vista et Windows 7, le dossier est

C:\Utilisateurs \ username \ AppData\Local \ Nom de l'application

ou

C:\Utilisateurs \ username \ AppData\Roaming \ Nom de l'application

Champ d'application

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

96
SolutionYogi

Voici l'extrait que vous pouvez utiliser pour obtenir par programme 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 PerUserRoamingAndLocal pour les paramètres utilisateur par défaut (comme je m'en suis souvenu).

Mise à jour: Étrange mais il y a trop de réponses incorrectes ici. Si vous recherchez votre fichier de paramètres d’utilisateur scoped (user.config), il se trouvera dans le dossier suivant (pour Windows XP):

C:\Documents and Settings\(nom d'utilisateur)\Paramètres locaux\Application Data\(nom-société-si-existe)\(nom-app) .exe_ (URL | Nom fort) _ (hachage)\(version-app) \

Url ou StrongName dépend de votre candidature ou non du nom fort de l’assemblage.

51
arbiter

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

Lorsque vous ajoutez des paramètres à un projet, VS crée un fichier nommé app.config Dans votre répertoire de projet et enregistre les paramètres dans ce fichier. Il crée é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 changer cela) le app.config Dans le répertoire de construction, en changeant son nom pour correspondre à l’exécutable (par exemple, si votre exécutable est nommé foo.exe, Le Le fichier sera nommé foo.exe.config), qui correspond au 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 via l'éditeur de paramètres du VS, il mettra à jour à la fois app.config Et Settings.cs. (Si vous examinez les accesseurs de propriété dans le code généré dans Settings.cs, Vous verrez qu'ils sont marqués avec un attribut contenant la valeur par défaut du paramètre figurant dans votre fichier app.config. ) Si vous modifiez un paramètre en modifiant directement le fichier app.config, Settings.cs Ne sera pas mis à jour, mais la nouvelle valeur sera toujours utilisée par votre programme lors de son exécution, car app.config Est copié dans foo.exe.config Au moment de la compilation. Si vous désactivez cette option (en définissant les propriétés du fichier), vous pouvez modifier un paramètre en modifiant directement le fichier foo.exe.config Dans le répertoire de construction.

Il existe ensuite des paramètres définis pour l'utilisateur.

Les paramètres d'application sont en lecture seule. Votre programme peut modifier et enregistrer les paramètres de la portée de l'utilisateur, permettant ainsi à chaque utilisateur de disposer de ses propres paramètres. Ces paramètres ne sont pas stockés dans le fichier foo.exe.config (Car sous Vista, au moins, les programmes ne peuvent écrire dans aucun sous-répertoire de 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 attribué un nom fort à votre programme, celui-ci sera ajouté au nom du programme dans ce chemin.

17
Robert Rossney

En cherchant sur le hachage dans le nom du dossier, je suis tombé sur (via cette réponse ):

http://blogs.msdn.com/b/rprabhu/archive/2005/06/29/433979.aspx

(edit: lien Wayback Machine: https://web.archive.org/web/20160307233557/http://blogs.msdn.com:80/b/rprabhu/archive/2005/06/29/433979 .aspx )

Le chemin exact du user.config Les fichiers ressemblent à ceci:

<Profile Directory>\<Company Name>\<App Name>_<Evidence Type>_<Evidence Hash>\<Version>\user.config

<Profile Directory> - correspond au répertoire du profil itinérant ou au répertoire local. Les paramètres sont stockés par défaut dans le répertoire local user.config fichier. Pour stocker un paramètre dans le roaming user.config, vous devez marquer le paramètre avec le SettingsManageabilityAttribute avec SettingsManageability défini sur Roaming.

<Company Name> - est généralement la chaîne spécifiée par AssemblyCompanyAttribute (avec l’avertissement que la chaîne est échappée et tronquée selon les besoins, et si elle n’est pas spécifiée dans l’Assembly, nous avons une procédure de secours).

<App Name> - est généralement la chaîne spécifiée par AssemblyProductAttribute (mêmes mises en garde que pour le nom de la société).

<Evidence Type> et <Evidence Hash> - informations dérivées de la preuve de domaine d'application pour fournir un domaine d'application approprié et un isolement d'assemblage.

<Version> - généralement la version spécifiée dans AssemblyVersionAttribute. Cela est nécessaire pour isoler différentes versions de l'application déployée côte à côte.

Le nom du fichier est toujours simplement 'user.config '.

12
seeker

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

3
Kildareflare

Il se trouve dans un dossier portant le nom de votre application dans le dossier Données d'application du dossier de base de l'utilisateur (C:\documents et paramètres\utilisateur sous xp et c:\utilisateurs\utilisateur sous Windows Vista).

Il y a quelques informations ici aussi.

PS: - essayez d'y accéder par% appdata% dans la boîte d'exécution!

2
TheVillageIdiot

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 communs, mais les paramètres réels sont stockés dans app.config ou dans un fichier .config dans votre application.

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

1
Praveen Angyan

Si votre fichier de paramètres se trouve dans une application Web, il figurera dans le fichier web.config (juste en dessous de votre projet. S'ils se trouvent dans un autre type de projet, ils figureront dans le fichier app.config (également sous votre projet). .

Éditer

Comme indiqué dans les commentaires: les paramètres de votre application au moment du design se trouvent dans un fichier app.config pour des applications autres que les applications Web. Lorsque vous compilez, le fichier app.config est copié dans le répertoire de sortie et porte le nom votrenom . Exe.config. Au moment de l'exécution, seul le fichier nommé yourexename.exe.config sera lu.

1
JMarsch

Deux fichiers: 1) Un fichier app.config ou web.config. Les paramètres peuvent être personnalisés après la construction avec un éditeur de texte. 2) Le fichier settings.designer.cs. Ce fichier contient du code généré automatiquement pour charger le paramètre à partir du fichier de configuration, mais une valeur par défaut est également présente au cas où le fichier de configuration ne possède pas ce paramètre particulier.

0
Frank Schwieterman

Je sais que vous avez déjà répondu à cette question, mais ne pouvez-vous pas synchroniser les paramètres dans le concepteur de paramètres pour revenir aux paramètres par défaut?

0
jrsconfitto