Одиночная сборка, построенная на архитектуре x86, в результате чего вся сборка выполняется как 32-разрядная - PullRequest
2 голосов
/ 25 июня 2010

Моя программа (консольное приложение) ссылается на несколько других сборок (многие библиотеки с открытым исходным кодом).Я собрал сборку с набором опций «Любой процессор» (используя VS2008).Когда я запускаю сборку из 64-разрядной командной строки на компьютере под управлением Windows Server 2008 x64, процесс всегда запускается как 32-разрядный процесс!

Я просматривал свои ссылки и мне показалось, что у меня есть ссылкана 32-битную сборку ссылаются.Может ли эта единственная ссылка привести к тому, что вся сборка будет запускаться как 32-разрядная?

Кроме того, я использую ILMerge для объединения всех ссылочных сборок в одну сборку.Может быть, это как-то связано с этим?

Может ли кто-нибудь помочь мне понять, что здесь происходит?

Ответы [ 2 ]

6 голосов
/ 25 июня 2010

Если вам нужно загрузить 32-битную сборку, весь процесс должен быть 32-битным.Вы можете настроить таргетинг на «Любой ЦП» для своего основного приложения, но тогда оно будет работать на 64-битной основе и не работать во время выполнения при попытке загрузить 32-битную сборку.

ILMerge достаточно умен, чтобы переключить сборку главной записи с AnyCPUв x86, если у вас есть сборка x86 как часть вашего слияния, чтобы избежать этой проблемы.

Если вы хотите запустить 64-битную версию - вам нужно, чтобы все сборки были 64-битными или AnyCPU.

0 голосов
/ 25 июня 2010

Да, это, вероятно, ваша проблема.Я бы перестроил сборку как «Любой процессор».

...