Понимание заголовка сборки с помощью CorFlags (почему моя сборка загружается в 32-разрядное адресное пространство?)

Я нашел довольно много информации о том, как должна загружаться сборка.NET, основываясь на флагах, установленных в заголовке сборки. Страницы, такие как переключение битов на управляемых изображениях, чтобы заставить их загружаться с правильной битностью... кажется, предлагают, если у вас есть заголовок, как показано ниже.

PE : PE32 

ILONLY : 1

32BIT : 0 

Он был скомпилирован как "Любой процессор", и я могу ожидать, что он будет загружаться с 32-разрядным CLR на 32-разрядных платформах и с 64-разрядным CLR на 64-разрядных платформах. Это именно то поведение, которое я ожидал и хотел.

К сожалению, это не относится к моей 64-битной машине с Windows 7. Сборка загружается в 32-битное адресное пространство. Я знаю, что я должен быть в состоянии решить проблему во время компиляции, собирая с x64, но почему он делает неправильные вещи в первую очередь?

Как я могу исправить эту проблему? Это какая-то проблема с реестром или средой, на которую я еще не наткнулся?

1 ответ

Вы ничего не сказали о собрании. Только начальная сборка определяет разрядность процесса. EXE. Любая DLL должна следовать этому примеру.

Другие вопросы по тегам