2011-09-20 4 views
10

문제 해결 방법을 보여줄 수 있습니까 System.TypeLoadException?문제를 해결하려면 어떻게해야합니까? System.TypeLoadException?

동일한 솔루션의 단위 테스트 프로젝트에서 참조한 기존 솔루션에 대한 예외가 있습니다.

이 예외는 단위 테스트를 실행할 때 발생합니다. 그들은 때문에이 예외의 실패 :

세부 사항 :

시험 방법 MyErrorHandler.Test.MyTest.Parse_RecievesValidMessage_ReturnsArray 가 예외를 던졌다 : System.TypeLoadException : '어셈블리에서 MyTestAssemblyName를 입력 'MyTestNameSpace '를로드 할 수 없습니다입니다. 테스트, 버전 = 1.0.0.0, 문화 = 중립, PublicKeyToken = Somenumber.

조사해야 할 부분과 조사해야 할 곳은 무엇인가요?

+1

예외를 유발하는 요인은 무엇입니까? – Gabe

+0

전체 예외는 무엇입니까? –

+0

제 추가 사항을 확인하십시오. – pencilCake

답변

2

예외 메시지 또는 InnerException 속성에서 요청한 형식이 정규화 된 이름, 버전, 어셈블리인지 확인할 수 있습니다. 지정된 어셈블리가 응용 프로그램 디렉토리에서 도달 할 수 있는지 확인하십시오. 응용 프로그램 디렉토리 또는 응용 프로그램의 개인 탐색 경로에서 도달 가능한 의미.

EDIT : 또한 형식 로더가로드에 실패한 어셈블리에서 참조하는 위성 어셈블리에 도달 할 수 있는지 확인하십시오.

0

내부 예외를 살펴보십시오. 이것은 종종 정적 생성자가 예외를 throw 할 때 발생합니다.

2

디버그 -> 도구 -> 예외에서 '예외가 발생하면 중단'을 켜고 던진 열의 모든 확인란을 클릭 해보십시오. 테스트를 다시 실행하면이 예외가 던져지는 정확한 위치를 볼 수 있어야합니다.

0

음 ... 완전히 나쁜 것이 었습니다.

잘못된 어셈블리 이름을 제공하여 bin 폴더에 DLL이 누락되었습니다.

내 친구 덕분에 그는 bin 폴더를 확인하라고 지시했습니다. 추가 된 참조의 "경로"를 확인한 후에 완전히 다른 곳을 찾고 있음을 알았습니다.

11

이 예외가 throw되는 상황 중 하나는 실행중인 어셈블리의 이름이 지정된 유형의 어셈블리와 동일한 경우입니다. 예를 들어, MyApp.exe이고 형식이 MyApp.dll 인 경우 CLR은 형식이 MyApp.exe이어야한다고 가정합니다. 해결책은 그 어셈블리 중 하나의 이름을 바꾸는 것입니다.

+4

+1 머리 긁기가 많은 후 내 꼬리를 구해 주셔서 감사합니다! –

관련 문제