Jak zmienić (lub przesłonić) zmienną settings.settings, dodając zmienną do pliku app.config podczas produkcji?Jak przesłonić zmienną settings.settings za pomocą zmiennej app.config
Czy to możliwe?
Jak zmienić (lub przesłonić) zmienną settings.settings, dodając zmienną do pliku app.config podczas produkcji?Jak przesłonić zmienną settings.settings za pomocą zmiennej app.config
Czy to możliwe?
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>
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
OP prosi o Settings.settings a nie 'sekcji ApplicationSettings'. –
point taken - post changed! – BonyT
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:
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.
Dla wartości ciągu połączenia Zakres zastosowania:
<connectionStrings>
<add name="appname.Properties.Settings.setting1" connectionString="test string" providerName="dbProvider"/>
</connectionStrings>
Skąd pochodzi nazwa "appname"? –