구성 값에 따라 일부 기능을 테스트하려고합니다 (Settings["foo"]
= true이면 5, 그렇지 않으면 -1을 반환).tets 프로젝트의 app.config 파일에서 구성 값을 변경하십시오.
그래서 내가하려는 것은 런타임에 구성 값을 변경하는 것입니다.
내 설정 파일 때문에 (간체)과 같습니다
<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
은 여전히 '거짓'으로 평가됩니다.
어떤 아이디어가 있습니까?
나는'ConfigurationManager.RefreshSection'이 그것을 처리해야한다고 생각했다. (MSDN에서 : "이 방법은 다른 섹션에 영향을주지 않고 지정된 구성 섹션의 캐시를 무효화합니다.") –