2009-04-22 6 views
22

주변을 둘러 보았지만이 문제에 대한 해결책을 찾지 못했습니다. Configuration이라는 하위 디렉토리 아래에 구성 파일이있는 클래스 라이브러리를 만들고 싶습니다. 그 클래스 라이브러리를 어느 곳에 나 배치하고 싶고, 자신의 위치를 ​​아는 것으로 설정 파일을 찾고 싶습니다.클래스 라이브러리에서 현재 디렉토리를 가져 오는 방법은 무엇입니까?

Assembly.GetExecutingAssembly().Location의 이전 시도는 작동하지 않았습니다.
그것은 임시 위치를 반환하는 대신 이러한 목적

bin/Configuration 경로

C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\7c00e0a3\38789d63\assembly\dl3\9c0a23ff\18fb5feb_6ac3c901

있다.

그래서 :

  1. 클래스 라이브러리는 디스크에 자신의 위치를 ​​인식 할 수 있습니까? 이 디렉토리를 변경하면이 작동합니다
+0

구성을 응용 프로그램의 app.config 파일에 포함하고 클래스 라이브러리에서 ConfigurationManager를 사용하지 않는 이유는 무엇입니까? –

+0

ASP.NET이 더 나은 검색 가능성을 위해 질문을 명확히 할 수 있습니다. 데스크톱 응용 프로그램의 경우 GetExecutingAssembly()가 정상적으로 작동합니다. – Stu

+1

@ Justin : 클래스 라이브러리를 호출자 응용 프로그램과 독립적으로 만들고 싶습니다. @Stu : 둘 다. Console Apps와 Web Apps 모두에 사용할 수있는 클래스 라이브러리를 만들고 싶습니다. 클래스 라이브러리는 누가 그것을 호출하는지 신경 쓰지 않아야합니다. – nandos

답변

33

(등, IIS에 배포 VS 내부 디버깅) 응용 프로그램을 실행하는 방법에 따라 것으로 보인다 이후

  • 어떻게이 기능에 대한 알면서하는 테스트 스크립트에 대한 갈 것이라고 -

    string assemblyFile = (
        new System.Uri(Assembly.GetExecutingAssembly().CodeBase) 
    ).AbsolutePath; 
    
  • +0

    : System.Reflection.Assembly.GetExecutingAssembly() .Location이 동일한 정보를 제공하지 않습니다 ...? – dba

    +1

    @dba 그림자 복사가 없을 때. 예를 들어, 단위 테스트에서 그것을 시도하고 잘못 될거야 –