2012-12-06 2 views
1

.net 3.5 프로젝트에서 .net 2.0을 기반으로 작성된 어셈블리를 참조하고 있습니다. WIN2003 64 비트에 배포 할 때 그것의 작업 윈도우 XP 시스템에 잘,하지만 난어셈블리 참조 - System.BadImageFormatException 오류

System.BadImageFormatException: Could not load file or assembly 'Wrapper, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. An attempt was made to load a program with an incorrect format. 

WRN: Assembly binding logging is turned OFF. To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1. Note: There is some performance penalty associated with assembly bind failure logging. To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog]. 

프로젝트 아래에 오류가 수동으로 시도 대체 윅스 설치 프로그램을 사용하여 승리 XP의 32 비트 컴퓨터에 구축하고 배포 얻고있다

조립했지만 작동하지 않았습니다.

+0

가능한 복제본 : http://stackoverflow.com/questions/7325660/cannot-load-assembly-problem – Rik

답변

2

Wrapper 어셈블리의 빌드 속성을 확인해야합니다. 나는 그것이 32 비트 (x86)로 설정되어 있다고 생각한다. 64 비트 CLR에로드하려면 AnyCpu 또는 x64가 필요합니다.

실제로 관리되지 않는 코드의 래퍼 인 경우 어셈블리의 두 가지 버전 (32 비트 용과 64 비트 용)이 필요할 수 있습니다.

또 다른 대안은 응용 프로그램을 32 비트로 변경하는 것입니다. 어떤 응용 프로그램을 실행하고 있는지 또는 적합한 지 여부는 분명하지 않지만 고려해 볼 가치가 있습니다.

+0

안녕하세요 John, 32 비트 시스템에서 실행하는 데 문제가 없습니다. 그래서 어셈블리는 32 비트 버전이라고 생각합니다. – RAJ

+0

@RAJ : 그냥 "믿는다"고하지 마라. * check * it. 파일을보십시오. ildasm을 사용하여 메타 데이터 섹션에서'.corflags'를 확인하십시오. –

+0

문제를 파악하고, corflags.exe를 사용하여 헤더를 찾으십시오. – RAJ