2010-02-02 4 views
0

나는 C#에서 서비스를 가지고 있으며, 구성을 위해 config.xml 파일을 사용합니다. xml을 서비스 실행 파일과 함께 표시하려고합니다. 하지만 내가 찾을 수/구성을로드 할 수 있도록 런타임에 서비스가 설치된 위치를 찾을 수있는 곳으로 이해할 수없는 것 같습니다.C# 서비스 위치

도와주세요.

답변

3

정적 방법 Assembly.GetEntryAssembly()는 당신에게 항목 어셈블리 (.exe 파일)에 대한 참조를 제공하고 Location 속성은 당신에게 파일의 위치 줄 것이다 : 당신이 경우, 주위

Assembly.GetEntryAssembly().Location 

또 다른 방법 엔트리 어셈블리의 유형을 알고, 어셈블리에 대한 참조를 얻기 위해 Type.Assembly을 사용하는 것입니다

typeof(Program).Assembly.Location 

그냥 디렉토리 경로가 필요한 경우는, 정적 Path.GetDirectoryName() 방법을 사용합니다.

Off 주제 : configuration API이 .NET에 내장되어 있다고 생각하십니까? 나는 이것이 당신의 특별한 경우에 더 나아질 것이라고 말하지는 않지만, 당신 자신의 구성 프레임 워크를 롤링하기 전에 고려할 가치가 있다고 생각합니다.

0

당신은 Visual Studio에서 프로젝트를 제작하고 있으며 컴파일 된 EXE가 저장된 위치를 알고 싶습니까? "[project folder] \ bin \ debug"에서 찾을 수 있습니다.

또는 이미 컴퓨터에 서비스가 설치되어 있고 실행중인 위치를 알고 싶습니까? 이렇게하려면 서비스를 마우스 오른쪽 단추로 클릭하고 속성을 선택할 수 있습니다. 그러면 파일의 경로가 표시됩니다.

0

실행 파일은 AppDomain.CurrentDomain.BaseDirectory입니다.

내 서비스 프로젝트 중 일부는 이와 같이 사용자 정의 log4net 구성을로드합니다.

var file = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + "/" + filename); 
if (file.Exists) { 
    XmlConfigurator.ConfigureAndWatch(file);  
} 

동일한 서비스는 표준 구성을 위해 일반 app.config 파일을 사용합니다.