[C#] 파일 또는 어셈블리를로드 할 수 없습니다 … 형식이 잘못된 프로그램을로드하려고했습니다 (System.BadImageFormatException).
나는 두 개의 프로젝트를 가지고 ProjectA
와 ProjectB
. ProjectB
에 의존하는 콘솔 응용 프로그램입니다 ProjectA
. 어제 모든 것이 잘 작동했지만 갑자기 오늘 달릴 때 나는 ProjectB
이것을 얻습니다.
BadImageFormatException이 처리되지 않았습니다 .
파일 또는 어셈블리 ‘ProjectA, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null’또는 해당 종속성 중 하나를로드 할 수 없습니다. 형식이 잘못된 프로그램을로드하려고했습니다.
둘 다 일반 프로젝트이며 다른 비 .Net 프로젝트에 대한 종속성이 없습니다. 둘 다 완전히 .Net입니다. 기본 코드가 없으며 P / Invoke가 없습니다. 의존 ProjectA
하고 여전히 잘 작동 하는 다른 프로젝트가 있습니다.
내가 시도한 것 :
- 빌드 체크 박스를 체크 한 상태에서 두 프로젝트 모두 “Any CPU”로 설정되어 있는지 확인하십시오 . 그들은.
- 두 프로젝트가 동일한 대상 프레임 워크 (.Net 4.0 클라이언트 프로파일)에 맞는지 확인하십시오 .
- ProjectB에서 -> 참고 문헌 -> PROJECTA는 -> 속성이 있는지 확인 “로컬 복사가” 로 설정 “참” _ (나는 ProjectA.dll가 제대로 복사되는 것을 확인)
- 솔루션을 청소 / 재 구축하십시오. 두 프로젝트에서 / bin 및 / obj 폴더를 수동으로 삭제하려고했습니다.
- Visual Studio를 다시 시작하십시오. 컴퓨터를 다시 시작하십시오.
- 완전히 새로운 저장소 사본을 확인하십시오.
그러나 여전히 같은 오류가 발생합니다. 이 문제의 원인과 해결 방법을 모릅니다. 어떤 아이디어?
답변
32 비트 / 64 비트 충돌이 있다고 확신합니다. 참조하는 클래스가 64 비트로 설정된 동안 기본 프로젝트가 32 비트로 설정되어있는 것 같습니다. 이 SO 질문 과 이것도 살펴보십시오 . 둘 사이에서 문제를 파악할 수 있어야합니다.
답변
서버에 배포 한 후 웹 사이트에 문제가있을 수 있습니다.
그런 다음 32 비트 응용 프로그램 사용으로 응용 프로그램 풀을 조정해야합니다 .
단계
답변
방금 Visual Studio 2015에서 IIS Express를 실행하는이 오류 메시지가 나타났습니다. 제 경우에는 64 비트 버전의 IIS Express를 실행해야했습니다.
도구 → 옵션 → 프로젝트 및 솔루션 → 웹 프로젝트
“웹 사이트 및 프로젝트에 IIS Express의 64 비트 버전 사용”이라는 상자를 선택하십시오.
스크린 샷 :
답변
나는이 같은 문제가 있었다. 프로젝트 A의 “플랫폼 대상”( “프로젝트 A”(> 오른쪽 클릭)-> 속성-> 빌드-> “플랫폼 대상”)을 x86으로 설정했지만 프로젝트 B를 “모든 CPU”로 유지했습니다. 프로젝트 B를 “x86″으로 설정하면이 문제가 해결되었습니다.
답변
Visual Studio 2015에서 단위 테스트 (xunit)를 실행하는 동안이 문제가 발생했으며 다음 수정 사항을 발견했습니다.
Menu Bar -> Test -> Test Settings -> Default Processor Architecture -> X64
답변
프로젝트에 32 비트 dll \ exe가 1 개 이상 있으면 IIS7 에서 Appication Pool 설정 “32bit Applications 사용”을 TRUE 로 변경해야 할 수 있습니다 .
답변
먼저 VS2017에서 오래된 프로젝트 로이 작업을 수행하여 모든 프로젝트를 약간 변경하고 프레임 워크 4.7로 변경해야했습니다.
다른 사람들이 선택 Any CPU
하면이 문제를 해결할 수 있다고 언급 했습니다.
필요한 몇 곳이 있으며 드롭 다운에서 선택하는 것만 큼 간단하지 않을 수 있습니다. 이것은 나를 위해 그것을 고쳤다 :
1) 여기서 두 가지를 모두 수행해야합니다.
2) 또한 Configuration Manager
(솔루션을 마우스 오른쪽 버튼으로 클릭하십시오)
그러나 그것이 없다면 어떻게 될까요 ???
그런 다음을 클릭 New
하고 다음 설정을 선택 하십시오 . ( thanks @RckLN )