2011-03-17 5 views
0

System.AddIn에서 일부 추가 기능이 있습니다. AddInStore.Rebuild를 실행하지만, BadImageFormatException 받기

string[] warnings = AddInStore.Rebuild(addInRoot); 

는 내가 다시 경고 문자열을 얻을 :

파일이 올바른 이진되지 않습니다 : D : \ AK \ AS \ ConverterModule 출력 \의 추가 기능 \ \ CompositeFileZip \ 파일 이름 7z.dll : D : AK \ \ AS \ ConverterModule 출력 \ \ 추가 기능 성분 조성 \ ...

7z.dll는 추가 기능 어셈블리가 아니라 7Z 파일 그 CompositeFileZip 추가 기능을 사용합니다. 재 빌드 기능이 정확히 무엇인지 정확히 알 수는 없습니다. addz로 7z.dll을 추가하려고합니까?

답변

5

System.AddIn 또는 7z 구성 요소에 익숙하지 않지만 매우 일반적인 원인 인 BadImageFormatException은 64 비트 (또는 기본 64 비트 .dll에 종속)로 표시된 어셈블리를로드하려고 시도합니다. 32 비트 시스템에서 또는 그 반대의 경우.

7z.dll 및 해당 종속성이 BadImageFormatException이 표시된 시스템과 동일한 아키텍처 용으로 빌드되었는지 확인하십시오.

 
    C:\Program Files\7-Zip>dumpbin /headers 7z.dll | findstr /i machine 
      8664 machine (x64) 
+1

을 ... 또는 닷넷 어셈블리가 아닌 어셈블리를로드 : 당신은 7z.dll의 헤더를 덤프하고 시스템 아키텍처를 찾아 Visual Studio 명령 프롬프트에서이 작업을 수행 할 수 있습니다. – adrianbanks

+0

나는 가지고있는 전화 번호를 얻는다. 그런 다음 32 비트 용으로 빌드 된 7z.dll로 전환했지만 BadImageFormatException은 여전히 ​​존재합니다. 프로젝트는 "모든 CPU"를 위해 빌드됩니다. –

+0

Bummer. 다른 제안이 나오지 않으면 나였습니다. .NET Framework 소스 디버깅을 활성화하고 예외가 발생할 때 중단되도록 디버거를 설정했습니다. 그런 다음 BadImageFormatException이 발생한 지점에서 세부 정보를 볼 수 있습니다. 자세한 내용은 [이 링크] (http://blogs.msdn.com/b/sburke/archive/2008/01/16/configuring-visual-studio-to-debug-net-framework-source-code.aspx)를 참조하십시오. .NET FW 소스 디버깅을 가능하게합니다. 예외가 발생하자마자 중단하려면 ** 디버그 | 예외 **를 VS에 넣은 다음 ** 공용 언어 런타임 예외 ** 옆의 ** 던져 ** 확인란을 선택하십시오. –