appSettings vs applicationSettings. appSettings nieaktualne? [duplikat]

To pytanie ma już odpowiedź tutaj:

Mam kilka pytań dotyczących dwóch sposobów zapisywania ustawień w sieci.config.

Appsettings : Zajrzyj do sieci.config

<appSettings>
 <add key="key1" value="value1"/>
 <add key="key2" value="value2"/>
</appSettings>

Zastosowanie w kod-za :

ConfigurationManager.AppSettings["key1"];

zastosowania / właściwości (autogenerowane za pomocą zakładki "właściwości" w projekcie)
zajrzyj do sieci.config

<applicationSettings>
    <Projectname.Properties.Settings>
        <setting name="TestEnvironment" serializeAs="String">
            <value>True</value>
        </setting>
    </Projectname.Properties.Settings>
</applicationSettings>

Użycie w kodzie-za :

Properties.Settings.Default.TestEnvironment

Więc, jaka jest różnica między tymi dwoma możliwościami przechowywania ustawień w sieci.config?
Z tego, co widzę, minusem appSettings jest to, że zmodyfikowałeś sieć.config siebie i appSettings nie są silne wpisywane, gdzie znajdują się aplikacje.

Oba są wymienne w ramach projektu wdrażania sieci.

Jeśli O mnie chodzi, nie ma żadnego zastosowania dla appSettings . Coś mnie ominęło? Który jest historycznie widziany starszy?

Author: KyleMit, 2010-02-28

4 answers

To zostało omówione wcześniej tutaj: plusy i minusy appSettings vs applicationSettings (. Net app.config) .

Jeśli chodzi o Wasze pytania: starszy to <appSettings>, był około przed 2.0, <applicationSettings> stał się dostępny w 2.0.

Korzyść? Kiedy edytuję wartość lub dodaję wartość na serwerze, gdzie najlepszym narzędziem jest notatnik <applicationSettings > jest bardzo verbose, a czasami ja po prostu chcę ciąg. Może głupi przykład, ale gdy podkręcam config Ustawienia między poziomami aby poprawnie skonfigurować automatyczne wdrażanie, niezwykle przydatne jest to, że jest proste.

Muszę się zgodzić z marc_s z drugiej dyskusji, jeśli robisz coś naprawdę skomplikowanego, prawdopodobnie zbliżasz się do punktu, w którym powinieneś mieć własną sekcję konfiguracji. Ponieważ jesteś de-serializing do swojego typu config przy starcie...otrzymujesz ten sam typ sprawdzając w ten sposób, tylko przez Serializer XML bezpośrednio jest jedynym różnica.

To również ma tę zaletę, że robię Config.LDAPServer lub może jeden config dla różnych obszarów, takich jak Security.Config i Themes.Config (zgaduję tutaj!), można tam uzyskać naprawdę przydatny / przejrzysty schemat nazewnictwa jako korzyść poboczną.

 22
Author: Nick Craver,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:46:50

ApplicationSettings są przestrzeniami nazw, więc dwa różne zespoły mogą mieć ustawienie "timeout" bez konfliktów, a ApplicationSettings są opcjonalne, ponieważ wartość domyślna jest ustawiana za pomocą atrybutu w ustawieniu w kodzie.

 21
Author: Bernhard Hofmann,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-26 05:40:46

Jedną z rzeczy, które zauważyłem jest to, że wartości AppSettings można odwoływać się za pomocą <%$ AppSettings: name %> inline tags w ASPX pages, ale wydaje się, że nie ma równoważnego sposobu dostępu do wartości ApplicationSettings poprzez inline tags.

 6
Author: Loophole,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-26 12:50:35

Chciałbym dodać, że interfejs graficzny IIS 8.0 (jak również poprzednie wersje) nie może edytować sekcji <applicationSettings> (jest niewidoczny, tzn. wygląda na to, że nie można skonfigurować żadnych parametrów), podczas gdy <appSettings> można edytować za pomocą IIS 8.0.

Byłoby miło, gdyby VS2012 / IIS 8.0 używał tego samego systemu GUI configure, ale produkty nie wydają się być zsynchronizowane w tym aspekcie. Tak czy inaczej, być może będziesz musiał edytować ustawienia aplikacji za pomocą Notatnika.

Połączenie ciągi znaków pojawiają się w obu GUI, ale jeśli używasz <applicationSettings> w IIS, zawierają one pełną przestrzeń nazw path ( .Właściwości.Ustawienia.ConnectionStringName ).

 3
Author: galmok,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-07 13:37:16