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

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

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

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



답변

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

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


답변

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


답변

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

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

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

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


답변

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


답변

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

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

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

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

답변

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

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


답변

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

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

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