CorFlags говорит, что моя .NET-программа работает как 64-битная, а DumpBin - 32-битная
Я создал проект и скомпилировал его какAny CPU
, на х64-винде. Поскольку у меня есть проблемы со ссылкой на эту сборку из моего кода, я проверил среду выполнения и target-plattform:
Как вы можете видеть, целевой платформой является x64 при работе на x64-OS (как у меня). Я проверилDumpBin
также:
PE signature found
File Type: EXECUTABLE IMAGE
FILE HEADER VALUES
14C machine (x86)
3 number of sections
57A49000 time date stamp Fri Aug 05 15:09:20 2016
0 file pointer to symbol table
0 number of symbols
E0 size of optional header
102 characteristics
Executable
32 bit word machine
Однако когда я бегуCorFlags
это дает мне x64 как платформу для этой сборки:
Version : v4.0.30319
CLR Header: 2.5
PE : PE32
CorFlags : 9
ILONLY : 1
32BIT : 0
Signed : 1
Насколько я понимаю, когда я выбралAny CPU
в качестве целевой платформы ОС выберет способ выполнения сборки. В 64-битной системе он будет работать в 64-битной, в 32-битной ОС как 32-битной соответственно.
Итак, мой вопрос: что я за версияна самом деле ориентируетесь? 32 или 64 бит?