2009-10-09 4 views
1

현재 런타임에 app.config를 만들려고합니다. 기본 개념은 여러 구성 파일을 배포하고 응용 프로그램 자체가 사용할 환경 변수를 기반으로 결정한다는 것입니다.런타임에 app.config를 변경하십시오.

현재 myapp.exe.config에 사용하려는 구성 파일을 복사하고 모든 섹션을 새로 고칩니다. 내가 직면 한 문제는 log4net이 여러 가지를 망쳐 놓은 것처럼 보이지만 릴리스 빌드에서만 (정적 필드가 다른 시간에 초기화됨에 따라)입니다.

빌드 할 때 사용할 구성을 명시 적으로 결정하고 싶지는 않습니다.

아이디어가 있습니다 (더 좋은 방법이있을 수 있습니다).

TIA 마틴

답변

1

사용할 것을 설정 결정 XmlConfigurator.Configure 사용하여 제자리에 복사 한 후에는 log4net를 구성 할 수 있습니다 (새 System.IO.FileInfo ("Filename.config을"))

+1

변경 사항이있을 때마다 config를 다시로드하는 log4net에도'XmlConfigurator.ConfigureAndWatch' 메소드가 있습니다. – Scoregraphic

0

AppDomain을 처음 시작할 때 AppDomain에 복사하지 않고 을 사용하면을 사용하고 새로운 AppDomain으로 실제 응용 프로그램을 시작할 수 있습니까? 젠장, 대안으로 프로세스를 별도로 가질 수 있습니까?? 하나의 부트 스트랩 프로세스는 올바른 구성이 제대로되었는지 확인한 다음 실제 응용 프로그램을 시작합니다.

이 두 가지 솔루션 모두 실제로 설정을 사용하기 전에 필요한 모든 작업을 수행하므로 작업을 단순하게 유지해야합니다.

정적 초기화가 정적 생성자의 존재 여부에 따라 일부로 제어 될 수 있습니다. 자세한 내용은 my article on beforefieldinit을 참조하십시오. 이 방법을 사용하여 현재 시스템을 수정하는 것은 권장하지 않습니다. 코드를 유지할 때는 매우 약해집니다.

+0

안녕하세요. 힌트는 thx입니다. 나는 정적 ctor를 추가하는 것이 내 문제를 해결할 것이라는 것을 안다.하지만 나는 그런 코드를 유지하는 것이 재미있는 것은 아니라고 말했다. –

0

설정 파일 대신 Application Settings을 사용할 수 없습니까? 사용자가 변경해야하는 것이 아니라면, 내부적으로 설정 한 여러 세트를 사용하여 설정을 바꾸는 것이 좋습니다.

+0

아니요. 일부 맞춤 섹션을 기대하는 외부 구성 요소를 사용하고 있기 때문입니다. –

+0

아 너무 나쁩니다. . . . – womp

관련 문제