2011-07-07 13 views

Respuesta

7

Tiene que hacer referencia directamente a la aplicación que está intentando sobrescribir y especificar explícitamente la propiedad que tiene un valor reemplazado.

<configuration> 
    <!-- section definitions for all elements in <configuration> tag --> 
    <configSections> 
    <!-- section group, meaning: there will be a <applicationSettings> tag in you configuration--> 
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> 
     <!-- defines that there will be a <appname.Properties.Settings> tag inside your <applicationSettings> tag --> 
     <section name="appname.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
    </sectionGroup> 
    </configSections> 

    <applicationSettings> 
    <appname.Properties.Settings> 
     <!-- name of the property you want to override --> 
     <setting name="setting1" serializeAs="String"> 
     <!-- new value --> 
     <value>new string value</value> 
     </setting> 
    </appname.Properties.Settings> 
    </applicationSettings> 
</configuration> 
+0

¿de dónde viene 'appname'? –

-1

Sólo a través de código:

por ejemplo

if (bool.Parse(ConfigurationManager.AppSettings["overridethis"].ToString())) 
{ 
    //use overridden value 
} 

Sin embargo, si su problema es mantener diferentes valores de configuración en diferentes entornos, entonces usaría AppSettings en su lugar.

Puede utilizar un archivo de anulación del desarrollador.

<appSettings file="..\user.config"> 

Ver http://www.compiledthoughts.com/2005/03/overriding-webconfig-app-settings-with.html

+0

El PO está preguntando por Settings.settings y no la sección 'ApplicationSettings'. –

+0

punto tomado - ¡post modificado! – BonyT

0

Depende del alcance de los ajustes. Si es una configuración de ámbito de aplicación que cambia su valor en app.config es suficiente.

Sin embargo, si se trata de una configuración del alcance del usuario, el valor presente en app.config es el utilizado por defecto para los usuarios nuevos y cada usuario que ya utilizó la aplicación tendrá el valor utilizado actualmente almacenado en un archivo separado, el usuario .config, por lo que cambiar el valor en app.config no tendrá ningún efecto para los usuarios que ya ejecutaron la aplicación una vez.

Debido a esto, el cambio del valor de una configuración de ámbito de usuario puede ser una tarea problemática. Puede comprobar la siguiente respuesta para obtener más información sobre cómo cambiar un valor del ámbito de usuario:

Changing User Scope Application Setting

0

utilizar diferentes archivos de configuración para la producción y para usted. Básicamente, en la producción compilaría en RELEASE, por lo que si usa Visual Studio para ello, use los eventos de compilación posteriores para copiar el archivo de configuración de RELEASE en caso de que prepare una construcción para la producción.

yo preferiría este lugar de cambiar desde el código, como por otra persona es mucho más fácil ver la differenc en el archivo de configuración, a continuación, profundizar en el código para encontrar todas las cosas if/else.

1

Para un valor de cadena de conexión alcance de uso:

<connectionStrings> 
    <add name="appname.Properties.Settings.setting1" connectionString="test string" providerName="dbProvider"/> 
    </connectionStrings> 
Cuestiones relacionadas