Как переопределить переменную settings.settings переменной app.config - PullRequest
5 голосов
/ 07 июля 2011

Как я могу изменить (или переопределить) переменную settings.settings, добавив переменную в app.config на производстве?

Возможно ли это в любом случае?

Ответы [ 5 ]

7 голосов
/ 07 июля 2011

Вы должны напрямую ссылаться на applicationSettings, которые вы пытаетесь переопределить, и явно указывать свойство, которое имеет заменяемое значение.

<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>
1 голос
/ 19 сентября 2013

Для значения строки подключения области приложения:

  <connectionStrings>
    <add name="appname.Properties.Settings.setting1" connectionString="test string" providerName="dbProvider"/>
  </connectionStrings>
0 голосов
/ 07 июля 2011

Зависит от объема настроек.Если это параметр области приложения, достаточно изменить его значение в app.config.

Однако, если это настройка области действия пользователя, то значение, присутствующее в app.config, является просто значением по умолчанию, используемым для новых пользователей, и у каждого пользователя, который уже использовал приложение, текущее используемое значение будет храниться в отдельном файле,user.config, поэтому изменение значения в app.config не окажет влияния на пользователей, которые уже запускали приложение один раз.

Из-за этого изменение значения параметра области действия пользователя может быть проблематичной задачей.Вы можете проверить следующий ответ для получения дополнительной информации об изменении настройки области пользователя:

Изменение настройки приложения области действия пользователя

0 голосов
/ 07 июля 2011

Используйте разные конфигурационные файлы для производства и для вас.В основном на производстве вы должны компилировать в RELEASE, поэтому, если вы используете для этого Visual Studio, используйте события после сборки, чтобы скопировать файл конфигурации RELEASE в случае, если вы готовите сборку к производству.

Я бы предпочел это вместо измененияиз кода, что касается кого-то другого , гораздо легче увидеть разницу в файле конфигурации, а затем углубиться в код и найти все вещи if/else.

0 голосов
/ 07 июля 2011

Только через код:

например.

 if (bool.Parse(ConfigurationManager.AppSettings["overridethis"].ToString()))
 {
     //use overridden value
 }

Если, однако, ваша проблема заключается в поддержании разных значений конфигурации в разных средах, я бы вместо этого использовал AppSettings.

Затем вы можете использовать файл переопределения разработчика.

 <appSettings file="..\user.config">

См. http://www.compiledthoughts.com/2005/03/overriding-webconfig-app-settings-with.html

...