2010-07-13 4 views
4

참조한 어셈블리에서 정의한 클래스를 처음 사용하려고하면 정말 이상한 FileNotFoundException이 발생합니다. 어셈블리가 변경되지 않았으며 프로젝트 파일의 위치가 디스크의 실제 경로와 정확하게 일치합니다.참조 된 어셈블리에 대해 FileNotFoundException이 throw되었습니다.

이것은 갑자기 Windows 서비스 및 설치 프로젝트에 설치 프로그램을 추가 할 때 두 개의 라이브러리 프로젝트 인 Windows 서비스 프로젝트와 콘솔 응용 프로그램으로 구성된 솔루션에서 실패하기 시작했습니다. 그러나 콘솔 응용 프로그램을 단일 시작 개체로 사용하므로 콘솔 응용 프로그램과 서비스/설치 프로그램 프로젝트간에 아무런 참조가 없습니다.

+0

전체 스택 추적을 붙여 넣을 수 있습니까? – Grzenio

답변

4

어셈블리 바인딩 로깅을 사용하면 FileNotFoundException에 누락 된 파일의 전체 융합 프로빙 로그가 포함됩니다. 일반적으로 이것은 문제를 꽤 명백하게합니다.

http://msdn.microsoft.com/en-us/library/e74a18c4(VS.80).aspx

+0

OK - 로거를 설치하고 실행하여 예외를 잡아 내고 콘솔 앱이 자신의 출력 디렉토리 (\ bin \ Debug \)에 "누락 된"어셈블리를 찾고 있음을 발견했습니다. 되었습니다. 프로젝트 파일을보고 다른 * dll에 대한 참조를 찾아 삭제했습니다. 갑자기이 문제가 해결되었습니다. 어떻게 나에게 묻지 마라.하지만 효과가있다. : P –

+1

어셈블리를 참조 할 때, 그리고 어셈블리가 런타임에 어떻게 해석되는지는 완전히 다른 두 가지입니다. 이는 많은 사람들을 놀라게합니다. 위의 링크는 아마도 바인딩 프로브 순서를 참조하지만 IRRC 어셈블리는 GAC에서 먼저 확인한 다음 다른 곳에서는 개인 저장소 경로 (bin/debug)로 해석됩니다. 그 경로에 어셈블리의 복사본이있는 경우 (다른 종속성의 종속성이기 때문에), 그 위치에서로드됩니다. – piers7

관련 문제