Приложение с большим количеством сборок 32-битных - PullRequest
0 голосов
/ 19 июня 2010

У меня есть решение VS со многими сборками и сторонними утилитами. Мне нужно заставить приложение работать 32-битным при работе на 64-битной машине. Приложение отлично работает на 32-битной машине. Я заставил файл .exe быть только 32-разрядным, и при запуске на 64-разрядной машине я получаю сообщение об ошибке «Попытка загрузить программу с неверным форматом» Насколько я понимаю, изменение exe-файла заставит все сборки загружаться как 32-битные. Что происходит?

1 Ответ

1 голос
/ 16 августа 2010

Я знаю, что это старый вопрос;возможно, вы уже нашли свой ответ.

Я не знаком с настройкой ILONLY и 32BITREQUIRED ... обычно выбирая x86 вместо ANYCPU в раскрывающемся списке компилятора, прежде чем компиляция позаботится обо всем, что вам нужно.Вы также можете убедиться, что все ваши приложения настроены на компиляцию в x86 в диспетчере конфигурации.

Скорее всего, вы столкнулись с тем, что одна из сторонних утилит установила 64-битную версию.DLL на 64-битной машине, а ваше 32-битное приложение принудительно загружает 64-битную DLL.Если сторонняя DLL имеет 32-битную и 64-битную версию, скорее всего, установщик достаточно умен, чтобы знать, какую из них выбрать.

В 64-битной машине вы можете проверить два места:

  1. Если программа установлена ​​в C: \ Program Files \, это 64-битная DLL;в противном случае он был бы установлен в C: \ Program Files (x86) \
  2. Перейдите в GAC из командной строки: c: \ Windows \ assembly и посмотрите в GAC_32 против GAC_64.Если вы нашли его в GAC_64, вы пытаетесь загрузить 64-битную DLL

HTH!Джеймс

...