다음을 통해 공유


예외 문제 해결: System.BadImageFormatException

업데이트: 2011년 4월

BadImageFormatException 예외는 DLL이나 실행 프로그램의 파일 이미지가 관리되는 올바른 실행 파일이 아닌 경우에 throw됩니다.

관련 팁

  • 32비트 구성 요소를 사용하는 응용 프로그램은 항상 32비트 응용 프로그램으로 실행되도록 해야 합니다.
    응용 프로그램 프로젝트의 플랫폼 대상 속성이 AnyCPU로 설정되어 있는 경우 컴파일된 응용 프로그램은 64비트 또는 32비트 모드에서 실행될 수 있습니다. 64비트 응용 프로그램으로 실행될 때는 JIT(Just-In-Time) 컴파일러가 64비트 네이티브 코드를 생성합니다. 응용 프로그램에서 관리되거나 관리되지 않는 32비트 구성 요소를 사용하는 경우 해당 구성 요소는 64비트 모드에서 로드되지 않습니다. 이 문제를 해결하려면 프로젝트의 플랫폼 대상 속성을 x86으로 설정하고 다시 컴파일하십시오.

  • 다른 버전의 .NET Framework로 만들어진 구성 요소를 사용하고 있지 않아야 합니다.
    이 예외는 .NET Framework 1.0 또는 .NET Framework 1.1을 사용하여 개발된 응용 프로그램 또는 구성 요소가 .NET Framework 2.0 SP1 이상을 사용하여 개발된 어셈블리를 로드하려고 할 때나 .NET Framework 2.0 SP1 또는 .NET Framework 3.5를 사용하여 개발된 응용 프로그램이 .NET Framework 4를 사용하여 개발된 어셈블리를 로드하려고 할 때 throw됩니다. BadImageFormatException 예외는 컴파일 타임 오류로 보고될 수 있으며, 또는 런타임에 예외가 throw될 수 있습니다. 예제를 보려면 BadImageFormatException 클래스를 참조하십시오.

  • 파일 이미지가 관리되는 올바른 어셈블리 또는 모듈이어야 합니다.
    이 예외는 관리되지 않는 동적 연결 라이브러리 또는 실행 파일이 로드를 위해 Load 메서드에 전달될 때 throw됩니다.

    Visual Basic에 관련된 자세한 내용은 상호 운용성 문제 해결(Visual Basic)을 참조하십시오.

설명

C++ 실행 파일을 반영할 때 이 예외가 throw될 수 있습니다. 이 예외는 대부분 C++ 컴파일러가 실행 파일에서 .Reloc 섹션이나 재배치 주소를 제거하는 경우에 발생합니다. C++ 실행 파일에서 재배치 주소를 유지하려면 링크할 때 /fixed:no를 지정합니다.

이 예외의 발생 원인에 대한 자세한 내용은 BadImageFormatException 클래스를 참조하십시오.

참고 항목

작업

방법: 예외 도우미 사용

참조

BadImageFormatException

변경 기록

날짜

변경 내용

이유

2011년 4월

예외의 일반적인 원인이 추가되었습니다.

고객 의견