Понимание заголовка сборки с помощью CorFlags (почему моя сборка загружается в 32-разрядное адресное пространство?)
Я нашел довольно много информации о том, как должна загружаться сборка.NET, основываясь на флагах, установленных в заголовке сборки. Страницы, такие как переключение битов на управляемых изображениях, чтобы заставить их загружаться с правильной битностью... кажется, предлагают, если у вас есть заголовок, как показано ниже.
PE : PE32
ILONLY : 1
32BIT : 0
Он был скомпилирован как "Любой процессор", и я могу ожидать, что он будет загружаться с 32-разрядным CLR на 32-разрядных платформах и с 64-разрядным CLR на 64-разрядных платформах. Это именно то поведение, которое я ожидал и хотел.
К сожалению, это не относится к моей 64-битной машине с Windows 7. Сборка загружается в 32-битное адресное пространство. Я знаю, что я должен быть в состоянии решить проблему во время компиляции, собирая с x64, но почему он делает неправильные вещи в первую очередь?
Как я могу исправить эту проблему? Это какая-то проблема с реестром или средой, на которую я еще не наткнулся?
1 ответ
Вы ничего не сказали о собрании. Только начальная сборка определяет разрядность процесса. EXE. Любая DLL должна следовать этому примеру.