2010-01-03 2 views
4

3 개의 프로젝트가있는 솔루션이 있습니다. 프로젝트 중 2 개는 log4net을 참조하고 다른 2 개는 DLL을 참조합니다.참조 된 모든 DLL을 C#에서 별도의 폴더로 이동하는 방법?

설치 패키지를 만들고 각 프로젝트에 대한 프로젝트 출력을 추가하면 DLL이 기본 "응용 프로그램 폴더"에 놓입니다. 이 DLL을 설치 프로젝트에서 만든 별도의 폴더로 드래그하면 "log4net을 찾을 수 없습니다"라는 메시지가 응용 프로그램에서 실행되지 않습니다. 나는이 DLL 레퍼런스를 "bin"이나 다른 이름처럼 정말로 원한다. 단지 혼란을 가중시키는 메인 폴더가 아니다. 단지 나의 2 .exe를 메인 폴더에 넣고 싶다.

각 프로젝트에서 "bin"폴더를 가리키는 참조 경로를 추가하려고 시도했습니다. 그런 다음 설치 프로젝트에서 "bin"이라는 출력 폴더를 추가하고 해당 폴더로 DLL을 이동했지만 여전히 작동하지 않습니다.

내가 무엇이 누락 되었습니까? 나는 내가 뭘 잘못하고 있는지 알아 내려고하는 데 몇 시간을 보냈다. 어쩌면 내가 태어난 방법 일 수도있다! 어떤 도움을 주셔서 감사합니다!

답변

10

당신은에서 검색하는 퓨전 (어셈블리 로더)에 대한 개인 경로를 지정 app.config 파일에 <probing> element를 사용할 수 있습니다.

이 당신이 당신의 응용 프로그램 디렉토리의 하위 경로입니다 경로를 지정할 수 있습니다 Fusion은 바인딩 할 어셈블리를 찾을 때 검색해야합니다. (문서 페이지에서 촬영) 예는 다음과 같습니다

<configuration> 
    <runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <probing privatePath="bin;bin2\subbin;bin3"/> 
     </assemblyBinding> 
    </runtime> 
</configuration> 

이 퓨전은 빈에서 검색된다는 것을 의미합니다, 어셈블리에 대한 BIN2의 \의 subbin (그러나 BIN2, IIRC)와 BIN3의 하위 디렉토리들을 결합 할 때.

+0

이 좋은 근무가보고 수정 고맙습니다! – user53885

3

나는,이 목적 그것은 "lib에"하위 폴더에 DLL을 움직이는 프로젝트에 포스트 빌드 타겟을 addes 에 대한 PrettyBin라고하는 nuget 패키지를 쓰고,의 app.config가

관련 문제