2009-06-16 9 views
6

Je ne comprends pas les choses suivantes:Fichier de paramètres Visual Studio - comment ça marche?

  1. Quelle est la différence entre app.config (applicationname.exe.config) et fichier de paramètres?
  2. Je suis incapable de trouver le fichier * .settings dans le répertoire Windows7 AppData sous le compte spécifique (j'ai entendu dire qu'il devrait être situé quelque part là-bas)?
  3. Supposons que le fichier * .settings se trouve quelque part sur le disque dur. Pourquoi sur le temps de développement les données du fichier de paramètres sont copiées dans le fichier de configuration de l'application?

Cordialement PK

Répondre

0
  1. Le fichier app.config représente les paramètres intrinsèques à l'application, et appliquera à toutes les sessions de l'application. Le fichier * .settings est généralement destiné aux paramètres spécifiques à l'utilisation d'une application par un utilisateur donné. Essayez de rechercher dans le répertoire Application Data sous Paramètres locaux [«nom d'utilisateur» \ Paramètres locaux \ Données d'application \ «nom de l'application ...»], au lieu du répertoire Application Data direct de l'utilisateur [«nom d'utilisateur» \ Application Data ] La copie des paramètres dans le fichier app.config pour un fichier * .settings donné est utilisée pour l'initialiser la première fois que ces paramètres sont utilisés; y compris le cas où un nouveau paramètre est ajouté et une copie antérieure du fichier * .settings n'a pas encore le nouveau paramètre.

Voici un lien pour une brève description des paramètres en C#.

Using Settings in C# (MSDN)

+0

Le problème est que fichier de paramètres n'est pas là. Il n'y a pas de répertoire d'application sous: «nom d'utilisateur» \ Paramètres locaux \ Données d'application \:/J'utilise Windows 7. – pkolodziej

+0

Essayez plutôt «nom d'utilisateur» \ AppData \ Local. Ce dossier peut être caché, mais devrait exister de toute façon. Vous pouvez supprimer les éléments masqués dans la vue pour l'explorateur. – meklarian

+0

Ce n'est vraiment pas là! Connaissez-vous un outil que je peux utiliser pour surveiller d'où le fichier exe est en train de lire? – pkolodziej

5

Ainsi, les paramètres par défaut sont stockés dans le fichier <exename>.config situé dans le même répertoire que l'exécutable. La raison pour laquelle vous ne trouvez pas le fichier user.config est qu'il est créé uniquement si vous avez modifié les paramètres par défaut. Les paramètres utilisateur remplacent les valeurs par défaut qui sont stockées dans le fichier <exename>.config. Si aucune modification n'a été effectuée, aucun fichier de configuration utilisateur n'existe. Et ... une fois qu'il existe, vous remarquerez que seuls les paramètres qui ont été modifiés apparaîtront dans le fichier user.config.

Pour tester ceci ... créez une variable factice appelée comme temp dans votre fichier Settings. Lorsque vous démarrez votre application faire:

Settings1.Default.temp = Settings1.Default.temp + 1; 
Settings1.Default.Save(); 

Vous avez maintenant un fichier appelé user.config créé dans le dossier ApplicationData de l'utilisateur qui, Vista est: C:\Users\<username>\AppData\Local\<company>\<productname>

Voici un code que j'ai écrit pour aider à identifier où tous les différents SpecialFolders où sur différents systèmes d'exploitation.(Cela peut vouloir faire une trouvaille-remplacer pour log.Debug et le remplacer par Console.WriteLine)

log.Debug("SpecialFolder.ApplicationData: " + Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)); 
log.Debug("SpecialFolder.CommonApplicationData: " + Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)); 
log.Debug("SpecialFolder.ProgramFiles: " + Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)); 
log.Debug("SpecialFolder.CommonProgramFiles: " + Environment.GetFolderPath(Environment.SpecialFolder.CommonProgramFiles)); 
log.Debug("SpecialFolder.DesktopDirectory: " + Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)); 
log.Debug("SpecialFolder.LocalApplicationData: " + Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)); 
log.Debug("SpecialFolder.MyDocuments: " + Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)); 
log.Debug("SpecialFolder.System: " + Environment.GetFolderPath(Environment.SpecialFolder.System)); 

sortie sur Windows Server 2003:

SpecialFolder.ApplicationData: "C:\Documents and Settings\blake\Application Data" 
SpecialFolder.CommonApplicationData: "C:\Documents and Settings\All Users\Application Data" 
SpecialFolder.ProgramFiles: "C:\Program Files" 
SpecialFolder.CommonProgramFiles: "C:\Program Files\Common Files" 
SpecialFolder.DesktopDirectory: "C:\Documents and Settings\blake\Desktop" 
SpecialFolder.LocalApplicationData: "C:\Documents and Settings\blake\Local Settings\Application Data" 
SpecialFolder.MyDocuments: "C:\Documents and Settings\blake\My Documents" 
SpecialFolder.System: "C:\WINDOWS\system32" 

sortie sur Vista:

SpecialFolder.ApplicationData: "C:\Users\blake\AppData\Roaming" 
SpecialFolder.CommonApplicationData: "C:\ProgramData" 
SpecialFolder.ProgramFiles: "C:\Program Files" 
SpecialFolder.CommonProgramFiles: "C:\Program Files\Common Files" 
SpecialFolder.DesktopDirectory: "C:\Users\blake\Desktop" 
SpecialFolder.LocalApplicationData: "C:\Users\blake\AppData\Local" 
SpecialFolder.MyDocuments: "C:\Users\blake\Documents" 
SpecialFolder.System: "C:\Windows\system32" 
+1

Ajout d'un petit supplément d'information ici. Puisque la question concerne Visual Studio, j'ai pensé qu'il serait approprié de mentionner que le "" pourrait être Microsoft_Corporation. Ainsi, à titre d'exemple, je viens de paramètres pour mon projet trouvé en cours dans le développement ici: "C: \ Users \ tony \ AppData \ Local \ Microsoft_Corporation \ DefaultDomain_Url_o3ghzq4nzylalqdtx0msfcg4cilbn2mv \ 12.0.31101.0 \ user.config" C'est VS2013. – TonyG

Questions connexes