Может кто-нибудь объяснить мне разницу между разделами AppSettings и ApplicationSettings в файле App.Config. Почему существуют два разных раздела, которые, по-видимому, делают то же самое?
В чем разница между секцией ApplicationSettings и секцией AppSettings?
Ответ 1
Я считаю, что коллекция <appsettings/>
в вашем app.config/web.config позволяет хранить настройки в парах ключ-значение и доступна через API System.Configuration следующим образом:
string setting = System.Configuration.ConfigurationManager.AppSettings["settingName"];
Настройки можно сохранять и извлекать только как строковые значения.
К ним также можно получить доступ через System.Configuration.ConfigurationSettings, но этот способ устарел.
Коллекция <ApplicationSettings/>
в вашем файле конфигурации хранит ваши настройки строго типизированным образом, а также позволяет вам получить доступ к этим настройкам строго типизированным способом. VS автоматически создает классы-оболочки для вас в файле settings.settings в папке Свойства вашего проекта. Чтобы добавить файл настроек в свой проект, щелкните правой кнопкой мыши на своем проекте и нажмите Свойства, затем откройте вкладку Настройки. Затем нажмите ссылку, чтобы добавить новый файл настроек. VS автоматически сгенерирует его для вас. Это легко.
Обычно вы получаете доступ к своим настройкам следующим образом:
MyProjectName.Properties.Settings.Default.SettingName
Обратите внимание на разницу в доступе к двум коллекциям.
Второй (не устаревший) способ хранения настроек - лучший способ сделать это и обеспечивает большую гибкость и мощность. Это требует некоторого обучения, но это стоит усилий.
Ответ 2
http://kevinskorner.net/blog/post/2008/03/27/applicationSettings-vs-appSettings.aspx
Настройки приложения дают нам больше контроль и самое главное, intelliscence.
Ответ 3
Это делать с обратной совместимостью, которую мы все любим. ApplicationSettings - это новая конструкция.
Пользователь новых классов ConfigurationManager и WebConfigurationManager, чтобы получить ваши настройки сейчас, и для этого вам нужна ссылка, поэтому System.configuration, а не System.Configuration:).
В какой-то момент он начал немного глупо, не так ли.