파일 또는 어셈블리 'xxx'또는 해당 종속성 중 하나를로드 할 수 없습니다. 형식이 잘못된 프로그램을로드하려고했습니다.


188

방금 Subversion에서 새 폴더로 개정판을 확인했습니다. 솔루션을 열었고 실행할 때 이것을 얻습니다.

파일 또는 어셈블리 'xxxx'또는 해당 종속성 중 하나를로드 할 수 없습니다. 형식이 잘못된 프로그램을로드하려고했습니다.

이것은 내가 얼마 전에 체크인했던 것과 같은 코드입니다. 왜 지금이 일을하고 있습니까? 이제 xxx 프로젝트의 bin 폴더에 Debug 대신 Debug x86이 표시됩니다. 디버그 x86은 무엇이며 왜 bin 폴더에서와 같이 디버그 만 가지고 있지 않습니까?


2
모두 다시 작성해 보셨습니까? 때때로 나를 위해 수정 이상한 종속성 문제는 ... 있음
mezoid

답변:


246

프로젝트의 한 부분은 x86 전용으로 빌드되고 나머지는 CPU / x64 용으로 빌드되는 것처럼 들립니다. 이것도 나에게 물렸다. x64 (또는 IA64)를 실행하고 있습니까?

프로젝트 속성을 확인하고 "모든 CPU"에 대해 모든 것이 빌드되고 있는지 확인하십시오. Visual Studio의 경우 화면 상단의 도구 모음에서 "x86"또는 "Any CPU"메뉴 ( "Debug"/ "Release"메뉴 옆)로 이동하여 클릭하여 모든 내용을 확인할 수 있습니다. "구성 관리자 ..."


1
프로젝트-> 속성-> 빌드 또는 디버그-> 속성-> 빌드에도 있습니다. 방금 VS2015, 버전 14.0.25123.00 업데이트 2를 업데이트했습니다.이 업데이트는 16/10/16 (어제!)에 릴리스되었습니다. 플랫폼 대상이 x64로 설정되어 오류가 발생했습니다. "모든 CPU"로 설정하면 문제가 해결되었습니다.
Michael D. O'Connor

179

64 비트 서버에서 IIS 7+로 사이트를 실행하는 동안이 오류가 발생하면 32 비트 어셈블리가있을 수 있으며 응용 프로그램 풀에는 "32 비트 응용 프로그램 사용"옵션이 False로 설정됩니다. 이것을 true로 설정하고 사이트를 다시 시작하여 작동 시키십시오.


5
@ Mayhem50 여기도 마찬가지입니다. 오류가 발생하는 위치에 따라 다릅니다. Visual Studio & Cassini 웹 서버를 통한다면 프레이저가 옳습니다. IIS7 +에서 발생하면 Nicks의 대답이 아마도 가장 낫습니다.
Carl Heinrich Hancke

이것은 나에게 완벽한 답이었습니다 (x86의 IIS6에서 x64의 IIS 7로 사이트를 이동했습니다)
DrStalker

그렇습니다. x86의 IIS6에서 x64의 IIS 7로 사이트를 옮겼습니다. 정말 고맙습니다!
Lukas

40

.Net SDK에 대한 무서운 Business Objects 4 를 사용하려고 할 때이 오류가 발생했습니다 .

5 개의 BusinessObjects * .dll 파일을 제공하지만 모두 64 비트입니다.

웹 페이지를로드하려면 Tools \ Options 를 클릭 한 다음 VS2013 에서이 설정을 변경해야했습니다.

여기에 이미지 설명을 입력하십시오


그 옵션은 저에게는 존재하지 않습니다. Visual Studio 2010에서이 화면의 유일한 옵션은 "새 파일 기반 웹 사이트 및 프로젝트에 IIS Express 사용"입니다.
Drew Chapin

VS 2017 Professional에서이 옵션을 사용했습니다
SKCS Kamal

33

그런 다음 inetmgr은 응용 프로그램 풀-> 풀의 고급 설정-> "32 비트 응용 프로그램 사용"옵션이 true로 설정됩니다. IIS를 다시 시작하십시오. 다시 확인하십시오!


두 번째입니다. 내 사이트에 대한 새 앱 풀을 만들고이 설정을 전환하는 것을 잊었습니다.
AlbatrossCafe

1
이것은 나를 위해 그것을 고쳤다. 내가 변경해야 할 유일한 것은 파이프 라인을 통합으로 변경하는 것이 었습니다. 위 수정 사항을 적용한 후에도 오류가 발생했기 때문입니다.
AxleWack

7

IIS에서 실행되는 응용 프로그램 (VS에서 실행되지 않음) (Visual Studio는 "Any CPU"에 대한 빌드를 사용하여 문제를 해결하므로)에서 BadImageFormatException이 발생할 수 있습니다.

이 사이트는 x64 서버이며 32 비트 응용 프로그램 사용에 대한 응용 프로그램 풀의 기본 설정은 False입니다. 32 비트 어셈블리가 있습니다

Visual Studio 레벨에서 수정 사항은 다음과 같습니다.

  1. 프로젝트 설정 "Target CPU"를 "ANYCPU"로 변경하십시오.

7

"32 비트 선호"설정을 확인하십시오. 필자의 경우 Visual Studio 2012에는 기본적 으로이 설정이 선택되어 있습니다. "32 비트 선호"를 선택 취소 할 때까지 외부 DLL에서 아무것도 사용하지 못했습니다 .

여기에 이미지 설명을 입력하십시오


4

CPU 대신 x86 호환성을 위해 빌드되는 일부 프로젝트의 경우 분명히 문제가됩니다. 추측해야한다면 프로젝트 간 참조 중 일부가 프로젝트 참조 대신 bin \ debug 폴더의 dll을 참조하고 있다고 말할 수 있습니다.

프로젝트가 'Any CPU'대신 x86 용으로 컴파일되면 dll은 bin \ debug 대신 bin \ x86 \ debug 폴더로 이동합니다 (아마도 참조가있는 곳입니다).

그러나 어쨌든 프로젝트간에 프로젝트 참조를 사용해야합니다.


0

IIS Express가있는 Visual Studio에서 작동하고 게시가 실패하면 다음을 시도하십시오.여기에 이미지 설명을 입력하십시오

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.