appSettings против applicationSettings. appSettings устарели? [дубликат]
этот вопрос уже есть ответ здесь:
у меня есть несколько вопросов о двух способах сохранения настроек в интернете.конфиг.
Appsettings: Заглянуть внутрь сеть.конфигурации
<appSettings>
<add key="key1" value="value1"/>
<add key="key2" value="value2"/>
</appSettings>
использование в коде:
ConfigurationManager.AppSettings["key1"];
ApplicationSettings / Properties (автогенерируется с помощью вкладки "свойства" в проекте)
посмотреть в интернете.конфигурации
<applicationSettings>
<Projectname.Properties.Settings>
<setting name="TestEnvironment" serializeAs="String">
<value>True</value>
</setting>
</Projectname.Properties.Settings>
</applicationSettings>
использование в коде:
Properties.Settings.Default.TestEnvironment
Итак, в чем разница между этими двумя возможностями хранения настроек в интернете.конфиг?
Насколько я могу смотрите, недостатком appSettings является то, что вы изменили веб.сконфигурируйте себя и appSettings не являются строго типизированными, где как applicationSettings.
оба заменяются в рамках проекта веб-развертывания.
насколько я могу судить, есть нет пользы для appSettings. Я что-то упустил? Какой из них исторически считается более старым?
4 ответа:
это уже обсуждалось здесь:плюсы и минусы appSettings vs applicationSettings (.NET app.config).
что касается ваших вопросов: старший из них
<appSettings
>, Это было примерно до 2.0,<applicationSettings
> стал доступен в версии 2.0.преимущество? Когда я редактирую значение или добавляю значение на сервере, где лучшим инструментом является notepad
<applicationSettings
> is очень многословный, а иногда и я просто хочу, чтобы строки. Может быть, тупой пример, но когда я настраиваю параметры конфигурации между уровнями, чтобы правильно настроить автоматическую установку развертывания, это чрезвычайно полезно, что это просто.Я должен согласиться с marc_s из другого обсуждения, хотя, если вы делаете что-то действительно сложное, вы, вероятно, приближаетесь к точке, в которой вы должны иметь свой собственный раздел конфигурации в любом случае. Так как вы де-сериализации в код конфигурации типа при запуске...вы получаете тот же тип проверки таким образом, просто через XML-сериализатор напрямую-это единственное отличие.
это также имеет преимущество меня делать
Config.LDAPServer
или, может быть, один конфиг для разных областей каждый, какSecurity.Config
иThemes.Config
(гадать здесь!), вы можете получить действительно полезную/четкую схему именования там в качестве побочного преимущества.
ApplicationSettings являются пространствами имен, поэтому две разные сборки могут иметь параметр "тайм-аут" без конфликтов, а ApplicationSettings являются необязательными, поскольку значение по умолчанию устанавливается через атрибут в параметре в коде.
Я заметил, что на значения AppSettings можно ссылаться через
<%$ AppSettings: name %>
встроенные теги на страницах aspx, но, похоже, нет эквивалентного способа доступаApplicationSettings
значения через встроенные теги.
Я хотел бы добавить, что IIS 8.0 GUI (и предыдущие версии также) не может редактировать
<applicationSettings>
раздел (он невидим, т. е. Кажется, что никакие параметры не могут быть настроены), тогда как<appSettings>
доступны для редактирования с IIS 8.0.было бы неплохо, если бы VS2012/IIS 8.0 полностью использовал ту же систему настройки GUI, но продукты, похоже, не синхронизированы в этом аспекте. Так или иначе, вам может потребоваться изменить параметры приложения с блокнот.
строки подключения отображаются в обоих графических интерфейсах, но при использовании
<applicationSettings>
в IIS они включают полный путь (пространство имен.Свойства.Настройки.ConnectionStringName).