2016-08-02 2 views
0

.NET 프레임 워크 4.0 윈도우 2012일관성 "잘못된 형식"오류

나는 두 개의 EXE의 하나의 DLL을 사용하는있다. EXE 파일의 중 하나는 항상 작동하지만, 다른 EXE 항상이 메시지와 함께 실패합니다

파일 또는 어셈블리를로드 할 수 없습니다 '{dllHere}, 버전 = 1.0.0.0, 문화 = 중립, PublicKeyToken = null이'또는 하나 그것의 의존성의. 시도가 잘못된 형식의 프로그램을로드하려고했습니다. "

각 EXE는 별도의 폴더에 각 폴더는 DLL 자체의 동일한 복사본이 포함되어 있습니다.이에 대한 Google 검색 포인트는 컴파일에 의해 발생되는 그것은 하나의 EXE 작동하기 때문에 DLL이 잘못된 CPU를 위해., 그게 문제가되는 표시되지 않습니다.

두 EXE의 실행 벌금을 내 Win7에 PC와 WIN2003 서버에.이 오류의 원인을

을?

+2

실행 파일은 어떻게 컴파일됩니까? "CPU any"이면 동일한 exe가 32 또는 64 비트에서 작동합니다. dll도 "CPU any"로 컴파일되었는지 확인하십시오. – ChrisF

+0

아마도 프로그래밍 문제가 아니므로 수퍼 유저를 확인해야할까요? – Randy

답변

0

두 프로젝트 (.EXE)가 동일한 플랫폼 대상을 사용하는지 확인하십시오. 라이브러리의 대상 플랫폼에 따라 x86 또는 x64에서 컴파일하십시오.

+0

실패한 EXE와 DLL 모두 "대상 CPU : x86"을 가지고 있습니다. 내 Win7 PC에서 프로세스는 * 32 접미사를 표시합니다. Win2012 서버에는 접미사가 없습니다. – user2340157

0

.NET에서는 AnyCPU를 대상으로 허용합니다. 이는 동일한 실행 파일이 32 비트 및 64 비트 실행 파일로 실행될 수 있음을 의미합니다. 이로 인해 시나리오가 쉽게 생길 수 있습니다. 응용 프로그램 중 하나는 AnyCPU로, 다른 하나는 32 비트로 컴파일됩니다. DLL이 32 비트이면 32 비트 응용 프로그램 만 작동합니다. DLL이 64 비트이면 AnyCPU 응용 프로그램 만 작동합니다. 다른 컴퓨터에서 작동하기 때문에 가장 좋은 방법은 DLL이 32 비트이고 Win7 및 Win2k3 PC가 32 비트이므로 두 응용 프로그램이 모두 32 비트로 실행된다는 것입니다.

프로세스가 32 비트 또는 64 비트로 작업 관리자에서 실행 중인지 확인할 수 있습니다. 32 비트 프로세스의 경우 *32 접미사가 있습니다.