изменить значение конфигурации в файле app.config проекта tets - PullRequest
0 голосов
/ 25 октября 2011

Я пытаюсь проверить некоторые функциональные возможности, которые зависят от значения конфигурации (если Settings["foo"] = true, чем return 5, в противном случае - return -1).

Итак, я пытаюсь изменить значение конфигурации во время выполнения.
мой файл конфигурации выглядит так (упрощенно):

    <configSections>
      <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">      
        <section name="DomainSettings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
      </sectionGroup>
    </configSections>

<applicationSettings>
<DomainSettings>
    <setting name="foo" serializeAs="String">
      <value>false</value>
    </setting>
</ICTS.SmartQueue.Domain.DomainSettings>
</applicationSettings>

и я делаюследующее:

//get config file
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
//get relevant section
var section = (ClientSettingsSection)config.GetSection("applicationSettings/DomainSettings");
//get element from section
var element = section.Settings.Get("Foo"); 
//change its value and save it
element.Value.ValueXml.InnerText = true.ToString();
config.Save(System.Configuration.ConfigurationSaveMode.Modified, true);
//force refresh
ConfigurationManager.RefreshSection("applicationSettings/DomainSettings");

Я вижу, что значение фактически изменяется, когда я смотрю на файл конфигурации теста в каталоге 'Out' (MyTests.DLL.config).
Однако, DomainSettings.Default.Foo по-прежнему оценивается как «ложный».

есть идеи?

Ответы [ 2 ]

0 голосов
/ 25 октября 2011

Это потому, что вы можете изменить файл конфигурации во время выполнения, но изменения не будут приняты, пока вы не перезапустите приложение.ASP.NET отличается, он воспринимает изменения сразу после изменения файла Web.config.

0 голосов
/ 25 октября 2011

Файл конфигурации кэшируется.Другими словами, только потому, что вы измените файл конфигурации с новым значением, он не будет перезагружен, пока приложение не перезагрузится.Затем вы увидите, что новое значение изменилось.Но когда вы ссылаетесь на файл конфигурации в вашем коде, он не читает файл, он читает конфигурацию, которая кэшируется.И в вашем случае это не , обновленное с вашим новым значением.

...