2014-03-31 9 views
6

내 솔루션에 기존 프로젝트를 추가했습니다.System.IO.FileLoadException : 파일 또는 어셈블리 Log4net을로드 할 수 없습니다.

메시지 : 시험 방법 예외 던졌다 soandso : System.IO.FileLoadException : 파일 또는 어셈블리를로드 할 수 없습니다 '를 log4net 내가 MSTEST 러너 모든 단위 테스트를 실행하면, 나는 시험의 몇 가지에 다음과 같은 오류가 , 버전 1.2.12.0, 문화 = 중립, PublicKeyToken = 669e0ddf0bb1aa2a '또는 그 중 하나가 종속됩니다. 찾은 어셈블리의 매니페스트 정의가 어셈블리 참조와 일치하지 않습니다. (HRESULT 예외 : 0x80131040)

다른 사람들도 같은 문제가 있었지만이 주제에 대한 다른 질문과 대답이 있습니다. 그러나 나는 많은 것을 시도했지만 아무런 도움이되지 않았습니다. 우리가 사용하는 log4net 버전은 1.2.13.0입니다.

FUSLOGVW.exe로 바인딩 오류를 검사했습니다. log4net은 추가 된 어셈블리와 일부 알 수없는 어셈블리로 나타납니다. 어셈블리에서 log4net에 대한 참조는 NuGet으로 추가 된 버전 1.2.13.0을 보여줍니다. 그래서 아마도이 모든 문제를 일으키는 종속 어셈블리 일 것입니다. log4net을 버전 1.2.12.0으로 다시 변경하려고 시도했지만 여전히 동일한 오류 메시지가 표시됩니다.

MSTest 테스트 러너로 모든 테스트를 실행하면 이러한 오류가 표시됩니다. 실패한 테스트 만 실행하면 통과합니다. 개별적으로 실행하면 통과합니다. 바인딩 리디렉션을 시도했지만 테스트 어셈블리가 아닌 테스트를 수행했습니다. 테스트 어셈블리를 수행하는 방법을 알지 못했습니다. 설정이 없습니다. Resharper 테스트 러너를 사용하여 테스트를 실행할 때도 통과합니다 (그러나 다른 테스트는 실패합니다). TFS Build 서버는 MSTest-runner를 실행하므로 MSTest와 함께 작동시켜야합니다.

내가 해결할 수있는 방법을 아는 사람이 있습니까?

+0

log4net의 샘플 프로젝트를 조사하십시오. –

+2

log4net에 대한 참조를 삭제하고 적절한 버전의 log4net에 새로운 참조를 추가하거나 참조의 '특정 버전'속성을 false로 변경하십시오. –

+0

그건 제가 시도한 첫 번째 일 중 하나였습니다. 나는 1.2.13.0, 1.2.12.0 그리고 log4net 1.2.13.0으로 구형 서명을 시도했다. 특정 버전 속성은 false로 설정됩니다. – tobre

답변

10

범인이 발견되었습니다. 내가 의심하는 것처럼, 종속 어셈블리가 log4net 1.2.12.0을 참조하고있었습니다. 알아 내는데 사용 된 도구는 dotPeek입니다. 다행히도 우리는 종속 어셈블리의 소스 코드를 가지고 있으며 최신 log4net을 참조하도록 변경할 수 있습니다. 이것은이 문제를 해결합니다.

누구나 비슷한 문제가있는 경우 dotPeek 또는 유사한 도구를 사용하여 종속 어셈블리를 참조하여 참조하는 어셈블리 버전을 찾으십시오.