2009-11-26 57 views
42

En mi aplicación WPF, hago clic en Settings.settings en el Explorador de soluciones y entro en una variable deStringCollection con un usuario alcance:¿Dónde se guardan los datos de Properties.Settings.Default?

alt text http://i45.tinypic.com/24xdmir.png

en mi app.config veo que que se guardan allí:

<userSettings> 
    <TestSettings.Properties.Settings> 
     <setting name="Paths" serializeAs="Xml"> 
      <value> 
       <ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
        <string>one</string> 
        <string>two</string> 
        <string>three</string> 
        <string>four</string> 
        <string>five</string> 
        <string>six</string> 
        <string>seven</string> 
       </ArrayOfString> 
      </value> 
     </setting> 
    </TestSettings.Properties.Settings> 
</userSettings> 

entonces ejecutar mi aplicación y con thi código de s:

StringCollection paths = Properties.Settings.Default.Paths; 

Properties.Settings.Default.Paths.Add("added in code"); 
Properties.Settings.Default.Save(); 

foreach (var path in paths) 
{ 
    System.Console.WriteLine(path); 
} 

que me da este salida:

one 
two 
three 
four 
five 
six 
seven 
added in code 

I ejecutar de nuevo la aplicación y me da este resultado:

one 
two 
three 
four 
five 
six 
seven 
added in code 
added in code 

Pero mira mi app.config de nuevo y todavía tiene el valores originales:

<userSettings> 
    <TestSettings.Properties.Settings> 
     <setting name="Paths" serializeAs="Xml"> 
      <value> 
       <ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
        <string>one</string> 
        <string>two</string> 
        <string>three</string> 
        <string>four</string> 
        <string>five</string> 
        <string>six</string> 
        <string>seven</string> 
       </ArrayOfString> 
      </value> 
     </setting> 
    </TestSettings.Properties.Settings> 
</userSettings> 

¿Dónde están los valores que se agregan por la aplicación que se salvan?

Respuesta

46

Desde que seleccionó el alcance del usuario, se guardan en cada directorio de perfil de usuario, más específicamente, dentro de la carpeta AppData del perfil de usuario en un archivo llamado user.config.

La ruta completa depende de la aplicación.

En Windows 7 sin perfil móvil y con una aplicación de Windows Forms llamado Example.Settings.CustomClass Me estoy poniendo la siguiente carpeta:

C:\Users\[user]\AppData\Local\Microsoft\Example.Settings.CustomCl_Url_3qoqzcgn1lbyw2zx3oz1o3rsw2anyjsn\1.0.0.0 

También tenga en cuenta que son salvados tomando en consideración el versión de su aplicación y que la los valores almacenados en App.config son los valores predeterminados que se usan para un nuevo usuario.

+1

Estoy teniendo el mismo problema. Veo que se actualiza en la carpeta AppData \ Local \ xxxx cuando guardo. Pero cuando inicio la aplicación, no se lee desde allí. ¿Cómo lo obligo a leer desde allí? – coolshashi

+0

@coolshashi, probablemente sea mejor para usted crear una nueva pregunta donde describa las condiciones exactas en las que está observando la falla al cargar la configuración del usuario. –

+3

Esta respuesta sigue siendo correcta para Windows 10 y se aplica a WPF y winforms. Entonces, la ruta a 'user.config' es' <...> \ Users \ \ AppData \ Local \ \ .exe_Url_ <32 caracteres aleatorios> \ '. El nombre de su aplicación se truncó a 25 caracteres, ¿cuál puede ser el máximo? –

0

Estaba buscando en Win 10 para la configuración. Si alguien más necesita saber, no están almacenados en la Subcarpeta de Microsoft (ver respuesta anterior). Solo mira aquí:

C:\Users\[user]\AppData\Local\Example\Example...\1.0.0.0\ 
Cuestiones relacionadas