당신은 당신이/헤더 옵션을 DUMPBIN.EXE에서 볼 출력에 대해 이야기해야합니다. anycpu를 설정 플랫폼 대상으로 컴파일되어 .NET 어셈블리에서 실행하면 다음과 같습니다 어떤 :
Dump of file ConsoleApplication1.exe
PE signature found
File Type: EXECUTABLE IMAGE
FILE HEADER VALUES
14C machine (x86)
3 number of sections
4E3E987F time date stamp Sun Aug 07 08:51:59 2011
0 file pointer to symbol table
0 number of symbols
E0 size of optional header
102 characteristics
Executable
32 bit word machine
etc..
예, IMAGE_FILE_HEADER.Machine 값이 0x14c로 설정되어, IMAGE_FILE_MACHINE_I386의 값 (일명 86). 이것은 아무런 결과가 아닙니다. 대상과 관련이없는 가장 강력한 힌트가 AnyCPU입니다. x64 운영 체제와 마찬가지로 x86에서도 실행됩니다. corflags.exe 무엇 당신이 정말로 사용할
, 그것은 당신에게 파일의 COR 헤더를 보여줍니다
Version : v4.0.30319
CLR Header: 2.5
PE : PE32
CorFlags : 1
ILONLY : 1
32BIT : 0
Signed : 0
32 비트 플래그가 중요 하나, 0 anycpu를 사용되었음을 나타냅니다. ILONLY = 1은 조립품이 IL 만 포함하고 기계 코드는 포함하지 않음을 나타냅니다. C++/CLI 언어를 사용하여 어셈블리를 만들면 0이됩니다.
사용자 x64로 설정된 이미지 파일을 만들 수 있습니다. .NET 3.0 (일명 .NET 2.0 SP1)에서 소개 된 것 같습니다. 플랫폼 대상을 x64로 설정하면 시스템 유형 필드가 IMAGE_FILE_MACHINE_AMD64 (일명 x64)로 설정됩니다. 이는 프로그램이 32 비트 운영 체제에서 실행되지 않으며 주 스레드가 1MB 스택 대신 4MB 스택으로 시작된다는 점 이외에 별 차이가 없습니다.
this answer에서 설명하는 64 비트 프로세스로 32 비트의 실행 이미지를 회전 마법.
플랫폼 별 P/Invoke를 수행하고 있습니까? x86 또는 x64 빌드 머신은 무엇입니까? –
내가 아는 플랫폼 관련 P/Invoke가 없습니다. – Craig
텍스트 편집기에서 .csproj (또는 .vbproj 파일)을 보면 Visual Studio에서 만든 새 프로젝트와 비교할 때 컴파일 대상이 적합하게 보이나요? 아니면 이상하게 보입니까? –