Cuando se utiliza un archivo Settings.settings en .NET, ¿dónde se almacena realmente la configuración?

Cuando se utiliza un archivo Settings.settings en .NET, ¿dónde se almacena realmente la configuración? Quiero eliminar la configuración guardada para volver al estado predeterminado, pero no puedo encontrar dónde está almacenada … ¿Alguna idea?

Depende de si la configuración que ha elegido está en el ámbito “Usuario” o en el ámbito “Aplicación”.

Alcance del usuario

La configuración del scope del usuario se almacena en

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

Puede leerlos / escribirlos en tiempo de ejecución.

Para Vista y Windows 7, la carpeta es

  C: \ Users \ nombre de usuario \ AppData \ Local \ ApplicationName 

o

  C: \ Users \ nombre de usuario \ AppData \ Roaming \ ApplicationName 

Alcance de la aplicación

La configuración del scope de la aplicación se guarda en AppName.exe.config y son de solo lectura en tiempo de ejecución.

Aquí está el fragmento que puede usar para obtener programáticamente la ubicación del archivo user.config:

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

ApplicationSettings (es decir, settings.settings) utiliza PerUserRoamingAndLocal para la configuración del usuario de forma predeterminada (como lo recordaba).

Actualización: Extraño, pero hay demasiadas respuestas incorrectas aquí. Si está buscando su archivo de configuración de ámbito de usuario (user.config), se ubicará en la siguiente carpeta (para Windows XP):

C: \ Documents and Settings \ (nombre de usuario) \ Configuración local \ Datos de aplicación \ (nombre-de-compañía-si-existe) \ (nombre-de-aplicación) .exe_ (Url | StrongName) _ (hash) \ (app-version) \

Url o StrongName dependen de que tenga un nombre seguro para el ensamblado de la aplicación o no.

Asumiendo que estás hablando de aplicaciones de escritorio y no de web:

Cuando agrega configuraciones a un proyecto, VS crea un archivo llamado app.config en su directorio de proyecto y almacena las configuraciones en ese archivo. También crea el archivo Settings.cs que proporciona los accesos estáticos a la configuración individual.

En tiempo de comstackción, VS (de forma predeterminada, puede cambiar esto) copie el app.config al directorio de comstackción, cambiando su nombre para que coincida con el ejecutable (por ejemplo, si su ejecutable se llama foo.exe , el archivo se llamará foo.exe.config ), que es el nombre que el administrador de configuración de .NET busca cuando recupera la configuración en tiempo de ejecución.

Si cambia una configuración a través del editor de configuraciones VS, actualizará tanto app.config como Settings.cs . (Si observa los app.config acceso a la propiedad en el código generado en Settings.cs , verá que están marcados con un atributo que contiene el valor predeterminado de la configuración que está en su archivo app.config ). Si cambia una configuración editando el archivo app.config directamente, Settings.cs no se actualizará, pero el nuevo valor seguirá siendo utilizado por su progtwig cuando lo ejecute, porque app.config se copia a foo.exe.config en tiempo de comstackción. Si lo desactiva (configurando las propiedades del archivo), puede cambiar una configuración editando directamente el archivo foo.exe.config en el directorio de comstackción.

Luego hay configuraciones con scope de usuario.

La configuración del scope de la aplicación es de solo lectura. Su progtwig puede modificar y guardar la configuración del scope del usuario, permitiendo así que cada usuario tenga su propia configuración. Estas configuraciones no se almacenan en el archivo foo.exe.config (ya que en Vista, al menos, los progtwigs no pueden escribir en ningún subdirectorio de Program Files de Program Files sin elevación); se almacenan en un archivo de configuración en el directorio de datos de la aplicación del usuario.

La ruta a ese archivo es %appdata%\%publisher_name%\%program_name%\%version%\user.config , por ejemplo, C:\Users\My Name\AppData\Local\My_Company\My_Program.exe\1.0.0\user.config . Tenga en cuenta que si le ha dado un nombre fuerte a su progtwig, el nombre fuerte se agregará al nombre del progtwig en esta ruta.

Mientras navegaba para descubrir el hash en el nombre de la carpeta, me encontré (a través de esta respuesta ):

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

La ruta exacta de los archivos user.config ve así:

\\__\\user.config

dónde

: es el directorio de perfil itinerante o el local. La configuración se almacena de manera predeterminada en el archivo local user.config . Para almacenar una configuración en el archivo roaming user.config , debe marcar la configuración con SettingsManageabilityAttribute con SettingsManageability establecido en Roaming .

: suele ser la cadena especificada por AssemblyCompanyAttribute (con la advertencia de que la cadena se escapa y se trunca según sea necesario, y si no se especifica en el ensamblado, tenemos un procedimiento alternativo).

: suele ser la cadena especificada por AssemblyProductAttribute (las mismas advertencias que para el nombre de la empresa).

y : información derivada de la evidencia del dominio de la aplicación para proporcionar el dominio adecuado de la aplicación y el aislamiento del ensamblaje.

: normalmente la versión especificada en AssemblyVersionAttribute . Esto es necesario para aislar las diferentes versiones de la aplicación desplegada una al lado de la otra.

El nombre del archivo siempre es simplemente ‘ user.config ‘.

Erm, ¿no puede simplemente usar Settings.Default.Reset () para restaurar su configuración predeterminada?

Está en una carpeta con el nombre de su aplicación en la carpeta Datos de la aplicación en la carpeta de inicio del usuario (C: \ documentos y configuraciones \ usuario en xp y c: \ usuarios \ usuario en Windows Vista).

También hay información aquí .

PD: ¡intenta acceder a él% appdata% en el cuadro de ejecución!

Todas sus configuraciones se almacenan en el respectivo archivo .config.

El archivo .settings simplemente proporciona una clase fuertemente tipada para un conjunto de configuraciones que pertenecen juntas, pero las configuraciones reales se almacenan en app.config o en un archivo .config en su aplicación.

Si agrega un archivo .settings, se agregará automáticamente un app.config para guardar la configuración si aún no la tiene.

Si su archivo de configuración está en una aplicación web, estará en el archivo web.config (justo debajo de su proyecto. Si están en cualquier otro tipo de proyecto, estarán en el archivo app.config (también debajo de su proyecto) .

Editar

Como se señala en los comentarios: la configuración de la aplicación de tiempo de diseño se encuentra en un archivo app.config para aplicaciones distintas de las aplicaciones web. Cuando comstack, el archivo app.config se copia en el directorio de salida y se llamará yourexename .exe.config. En tiempo de ejecución, solo se leerá el archivo llamado yourexename.exe.config.

Dos archivos: 1) Un archivo app.config o web.config. La configuración se puede personalizar después de comstackr con un editor de texto. 2) El archivo settings.designer.cs. Este archivo tiene código autogenerado para cargar la configuración desde el archivo de configuración, pero también está presente un valor predeterminado en caso de que el archivo de configuración no tenga la configuración particular.

Sé que ya está respondida, pero ¿no podría simplemente sincronizar la configuración en el diseñador de configuraciones para volver a su configuración predeterminada?