2011-07-07 25 views

回答

7

您必须直接引用您要覆盖的applicationSettings,并明确指定具有替换值的属性。

<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

'appname'从哪里来? –

-1

只能通过编码:

例如,

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

但是,如果您的问题是在不同的环境中维护不同的配置值,那么我会使用AppSettings代替。

然后,您可以使用开发人员覆盖文件。

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

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

+0

的OP被询问Settings.settings而不是'ApplicationSettings'部。 –

+0

要点 - 修改后! – BonyT

0

这取决于的设置范围。如果它的应用程序范围设置在app.config中更改它的值就足够了。

但是,如果它的用户范围设置,则app.config中存在的值只是用于新用户的默认值,并且已经使用该应用程序的每个用户都将当前使用的值存储在单独的文件中, .config,所以更改app.config中的值对已经运行该应用程序的用户没有任何影响。

由于此更改用户范围设置的值可能是一个麻烦的任务。您可以检查以下的答案的详细信息,更改用户范围设置:

Changing User Scope Application Setting

0

使用不同的配置文件进行生产和为您服务。基本上,你可以在RELEASE中进行编译,所以如果你使用Visual Studio进行编译,使用后期构建事件来复制RELEASE配置文件,以防你准备一个生产版本。

我愿意这样的,而不是从代码进行更改,为别人是很容易看到在配置文件中differenc,然后去深入到代码中查找所有if/else东西。

1

对于应用程序范围连接字符串值:

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