2011-07-07 14 views

Odpowiedz

7

Musisz bezpośrednio odwołać się do ustawień aplikacji, które próbujesz przesłonić i jawnie określić właściwość, która ma zastąpioną wartość.

<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

Skąd pochodzi nazwa "appname"? –

-1

Tylko za pomocą kodu:

np.

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

Jeśli jednak twój problem utrzymuje różne wartości konfiguracyjne w różnych środowiskach, zamiast tego użyłbym AppSettings.

Następnie można użyć pliku zastępującego programisty.

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

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

+0

OP prosi o Settings.settings a nie 'sekcji ApplicationSettings'. –

+0

point taken - post changed! – BonyT

0

To zależy od zakresu ustawień. Jeśli ustawienie zakresu aplikacji zmieniające jego wartość w pliku app.config jest wystarczające.

Jednak jeśli jest to ustawienie zakresu użytkownika, to wartość obecna w app.config jest po prostu domyślna dla nowych użytkowników, a każdy użytkownik, który już używał aplikacji, będzie miał aktualnie używaną wartość przechowywaną w oddzielnym pliku, użytkownik .config, więc zmiana wartości w app.config nie będzie miała wpływu na użytkowników, którzy już raz uruchomili aplikację.

Z powodu tej zmiany wartość ustawienia zakresu użytkownika może być uciążliwym zadaniem. Można sprawdzić następującą odpowiedź uzyskać więcej informacji na temat zmiany ustawienia zakresu obsługi:

Changing User Scope Application Setting

0

wykorzystują różne pliki konfiguracyjne dla produkcji i dla ciebie. Zasadniczo na produkcji kompilowałeś się w RELEASE, więc jeśli używasz do tego programu Visual Studio, użyj zdarzeń budowania postów, aby skopiować plik konfiguracyjny RELEASE w przypadku przygotowania kompilacji do produkcji.

wolałbym to zamiast zmieniać go z kodem, a dla kogoś innegodużo łatwiej jest zobaczyć differenc w pliku konfiguracyjnym, następnie przechodząc w głąb kodu, aby znaleźć wszystkie if/else rzeczy.

1

Dla wartości ciągu połączenia Zakres zastosowania:

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