2010-03-29 7 views
26

Powiel możliwe:
What is the difference between app.config file and XYZ.settings file?ustawienia vs app.config

nie jestem zrozumienie interakcji/różnice pomiędzy ustawieniami i plikami konfiguracyjnymi. Jeśli dodaję wpis do pliku ustawień, zostanie on również dodany do pliku app.config. Czy to oznacza, że ​​zmiana wartości w pliku app.config spowoduje aktualizację ustawień? Jeśli nie, jak mogę zaktualizować ustawienia w aplikacji na żywo? Jaki jest ogólny cel używania pliku ustawień zamiast umieszczania rzeczy bezpośrednio w pliku app.config?

+0

Podobny do http://stackoverflow.com/questions/13100498/c-sharp-app-config-vs-settings-file, który oferuje dodatkowy wgląd. –

Odpowiedz

16

Z tego, co mogę powiedzieć, rozglądając się, wydaje się, że plik ustawień i projektant zapewniają rodzaj opakowania dla pliku konfiguracyjnego. Projektant ustawień kontroluje niektóre wartości, które trafiają do pliku konfiguracyjnego, ale także modyfikuje plik .settings w katalogu Właściwości i zmienia wygenerowany kod w pliku Settings.Designer.cs.

Zauważ, że w pliku konfiguracyjnym wartości nie mają żadnych typów, ale w pliku .settings są. Teraz otwórz Settings.Designer.cs. Zobaczysz, że wygenerowany tam kod pobiera wartości z pliku konfiguracyjnego i rzuca je do odpowiednich typów, określonych w pliku .settings lub projektanta ustawień. Dlatego zapewnia bezpieczny interfejs dla wartości w pliku konfiguracyjnym. Jeśli zmienisz wartość w pliku konfiguracyjnym, następnym razem, gdy przejdziesz do projektanta ustawień, pojawi się pytanie, czy chcesz zaktualizować .settings, aby odzwierciedlić te zmiany.

Aby odpowiedzieć na twoje pytanie, po wdrożeniu aplikacji możesz zmienić wartość w pliku konfiguracyjnym, o ile można go przesłać do odpowiedniego typu, w przeciwnym razie zgaduję, że nie powiedzie się w Settings.Designer.cs. Jedynym celem, jaki widzę, wydaje się być bezpieczeństwo i wygoda projektanta w zakresie obsługi pliku konfiguracyjnego XML.

Również na marginesie, pamiętaj, że ponieważ config nie jest wersjonowanym plikiem, instalatorzy nie zaktualizują go na komputerze klienta. Nie pozwoli to na wymuszenie zmian użytkownika. Więc jeśli zostanie wdrożony, jeśli wprowadzisz własne zmiany do konfiguracji, której będą potrzebować użytkownicy, będą musieli skopiować zmiany ręcznie.

+0

Myślę, że jest inny cel, ponieważ Settings.Designer.cs zostaje skompilowany do aplikacji, aby mógł uzyskać dostęp do ustawień nawet po usunięciu app.config. –