modificar - savesetting c#
Cuando se utiliza un archivo Settings.settings en.NET, ¿dónde se almacena realmente la configuración? (10)
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.
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?
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 compilación, VS (de forma predeterminada, puede cambiar esto) copie el app.config
al directorio de compilació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 programa cuando lo ejecute, porque app.config
se copia a foo.exe.config
en tiempo de compilació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 compilación.
Luego hay configuraciones con alcance de usuario.
La configuración del alcance de la aplicación es de solo lectura. Su programa puede modificar y guardar la configuración del alcance 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 programas 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 programa, el nombre fuerte se agregará al nombre del programa en esta ruta.
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 alcance 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/ username /AppData/Local/ ApplicationName
o
C:/Users/ username /AppData/Roaming/ ApplicationName
Alcance de la aplicación
La configuración del alcance de la aplicación se guarda en AppName.exe.config
y son de solo lectura en tiempo de ejecución.
Dos archivos: 1) Un archivo app.config o web.config. La configuración se puede personalizar después de compilar 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.
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 here .
PD: ¡intenta acceder a él% appdata% en el cuadro de ejecución!
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í:
<Profile Directory>/<Company Name>/<App Name>_<Evidence Type>_<Evidence Hash>/<Version>/user.config
dónde
<Profile Directory>
: es el directorio de perfil itinerante o el local. La configuración se almacena de manera predeterminada en el archivo localuser.config
. Para almacenar una configuración en el archivo roaminguser.config
, debe marcar la configuración conSettingsManageabilityAttribute
conSettingsManageability
establecido enRoaming
.
<Company Name>
: suele ser la cadena especificada porAssemblyCompanyAttribute
(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).
<App Name>
: suele ser la cadena especificada porAssemblyProductAttribute
(las mismas advertencias que para el nombre de la empresa).
<Evidence Type>
y<Evidence Hash>
: 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.
<Version>
: normalmente la versión especificada enAssemblyVersionAttribute
. 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
''.
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?
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 compila, 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.
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.