2009-06-16 14 views
6

non capisco le seguenti cose:File di impostazioni di Visual Studio: come funziona?

  1. Qual è la differenza tra app.config (applicationname.exe.config) e le impostazioni di un file?
  2. Non riesco a individuare il file * .settings nella directory AppData di Windows 7 sotto l'account specifico (ho sentito che dovrebbe trovarsi da qualche parte laggiù)?
  3. Supponiamo che il file * .settings si trovi da qualche parte sul disco rigido. Perché nel tempo di sviluppo i dati dal file delle impostazioni vengono copiati nel file di configurazione dell'applicazione?

Cordiali saluti PK

risposta

0
  1. Il file app.config rappresenta impostazioni intrinseche alla domanda, e si applicherà a tutte le sessioni dell'applicazione. Il file * .settings è in genere per le impostazioni specifiche per l'uso di un'applicazione da parte di un determinato utente.

  2. Provare a cercare nella directory Dati applicazioni sotto Impostazioni locali [«nome utente» \ Impostazioni locali \ Dati applicazioni \ nome app ... »], invece della directory Dati applicazione diretta dell'utente [« nome utente »\ Dati applicazione ].

  3. La copia delle impostazioni nel file app.config per un determinato file * .settings viene utilizzata per inizializzarla la prima volta che vengono utilizzate tali impostazioni; incluso il caso in cui viene aggiunta una nuova impostazione e una copia precedente del file * .settings non ha ancora la nuova impostazione.

Ecco un collegamento per una breve panoramica delle impostazioni in C#.

Using Settings in C# (MSDN)

+0

Il problema è che il file delle impostazioni non è lì. Non esiste una directory app sotto: «nome utente» \ Impostazioni locali \ Dati applicazioni \:/Sto usando Windows 7. – pkolodziej

+0

Prova invece «username» \ AppData \ Local. Questa cartella potrebbe essere nascosta, ma dovrebbe comunque esistere. Puoi rimuovere gli elementi nascosti nella vista per explorer. – meklarian

+0

Non c'è davvero! Conoscete qualche strumento che posso usare per monitorare da dove viene letto il file exe? – pkolodziej

5

Quindi le impostazioni predefinite sono memorizzati nel file <exename>.config si trova nella stessa directory del file eseguibile.

Il motivo per cui non è possibile trovare il file user.config è che viene creato solo se sono state apportate modifiche ai valori predefiniti. Le impostazioni utente sovrascrivono i valori predefiniti che sono memorizzati nel file <exename>.config. Se non sono state apportate modifiche, non esiste alcun file di configurazione utente. E ... una volta che esiste, noterete che solo le impostazioni che sono state modificate verranno visualizzate nel file user.config.

Per verificare questo ... creare una variabile fittizia chiamata come temp nel file delle impostazioni. Quando si avvia l'applicazione fare:

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

Ora avrete un file chiamato user.config creato nella cartella ApplicationData dell'utente, che in Vista si trova a: C:\Users\<username>\AppData\Local\<company>\<productname>

Ecco il codice che ho scritto per aiutare a identificare dove tutti i vari SpecialFolders dove su diversi sistemi operativi.(Potrebbe desiderare di fare un ritrovamento-sostituzione per log.Debug e sostituirlo con 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)); 

uscita In 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" 

uscita su 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

Aggiungendo un piccolo extra di informazioni qui. Poiché la domanda riguarda Visual Studio, ho ritenuto opportuno menzionare che "" potrebbe essere Microsoft_Corporation. Così, ad esempio, ho appena trovato le impostazioni per il mio progetto in corso di sviluppo qui: "C: \ Users \ tony \ AppData \ Local \ Microsoft_Corporation \ DefaultDomain_Url_o3ghzq4nzylalqdtx0msfcg4cilbn2mv \ 12.0.31101.0 \ user.config" Questo è VS2013. – TonyG

Problemi correlati