다음과 같은 문제가 있습니다.
모듈을로드하는 응용 프로그램이 있습니다 (애드온). 이러한 모듈에는 app.config의 항목이 필요할 수 있습니다 (예 : WCF 구성). 모듈이 동적으로로드되기 때문에 응용 프로그램의 app.config 파일에 이러한 항목을 갖고 싶지 않습니다.
내가하고 싶은 것은 다음과 같습니다.
- 모듈의 구성 섹션을 통합하는 새 app.config를 메모리에 작성하십시오.
- 내 응용 프로그램에 새로운 app.config를 사용하도록 지시하십시오.
참고 : 기본 app.config를 덮어 쓰고 싶지 않습니다!
예를 들어 ConfigurationManager.AppSettings
새 파일을 사용 하도록 투명하게 작동해야 합니다.
이 문제를 평가하는 동안 여기에 제공된 것과 동일한 솔루션 을 찾았 습니다 : nunit으로 app.config 다시로드 .
불행히도 여전히 일반 app.config에서 데이터를 가져 오기 때문에 아무것도하지 않는 것 같습니다.
이 코드를 사용하여 테스트했습니다.
Console.WriteLine(ConfigurationManager.AppSettings["SettingA"]);
Console.WriteLine(Settings.Default.Setting);
var combinedConfig = string.Format(CONFIG2, CONFIG);
var tempFileName = Path.GetTempFileName();
using (var writer = new StreamWriter(tempFileName))
{
writer.Write(combinedConfig);
}
using(AppConfig.Change(tempFileName))
{
Console.WriteLine(ConfigurationManager.AppSettings["SettingA"]);
Console.WriteLine(Settings.Default.Setting);
}
combinedConfig
일반적인 app.config 이외의 다른 값을 포함 하지만 동일한 값을 두 번 인쇄합니다 .
Reload app.config with nunit
구성을로드하기 전에 응용 프로그램 항목에 사용하면 해킹이 확실하지 않을 수 있습니다.
AppDomain
적절한 구성 파일과 별도로 모듈을 호스팅하는 것은 옵션이 아닙니까?