Как заставить приложение .NET работать в 32-битном режиме

Я пытаюсь запустить приложение .NET 3.5 WinForms на Win7 x64. Приложение использует NHibernate и System.Data.OracleClient для доступа к базе данных Oracle. Клиент Oracle 32-битный.

При запуске приложения я получаю следующее сообщение об ошибке

Попытка загрузить клиентские библиотеки Oracle вызвала исключение BadImageFormatException. Эта проблема возникает при работе в 64-битном режиме с установленными 32-битными клиентскими компонентами Oracle.

В ответ на это я нацелил свою сборку на платформу x86:

Screenshot of the Build settings

К моему удивлению, та же ошибка сообщение появилось при попытке выполнить эту новую сборку на платформе Win7.

Сборка NHibernate загружается во время выполнения Assembly.Load ("..."); .

Could может быть, DLL NHibernate по-прежнему работает в 64-битном режиме, в то время как хост exe работает в 32-битном режиме. Для меня это звучит странно. Или по какой-то причине мое приложение работает в 64-битном режиме, даже если оно предназначено для x86?


Обновление:

Я проверил свой двоичный файл с помощью CorFlags, и он помечен как 32-битный:

Microsoft (R) .NET Framework CorFlags Conversion Tool.  Version  4.0.30319.1
Copyright (c) Microsoft Corporation.  All rights reserved.

Version   : v2.0.50727
CLR Header: 2.5
PE        : PE32
CorFlags  : 3
ILONLY    : 1
32BIT     : 1
Signed    : 0

Я также проверил его в диспетчере задач, и он имеет суффикс * 32 .

Я также пробовал и использовал CorFlags, чтобы добавить 32-битный флаг ко всем сборкам, которые идут с моим приложением. По-прежнему выдает то же сообщение об ошибке.

Я озадачен ... озадачен ... озадачен ...

10
задан Drew Gaynor 24 December 2011 в 18:37
поделиться