Я пытаюсь запустить приложение .NET 3.5 WinForms на Win7 x64. Приложение использует NHibernate и System.Data.OracleClient для доступа к базе данных Oracle. Клиент Oracle 32-битный.
При запуске приложения я получаю следующее сообщение об ошибке
Попытка загрузить клиентские библиотеки Oracle вызвала исключение BadImageFormatException. Эта проблема возникает при работе в 64-битном режиме с установленными 32-битными клиентскими компонентами Oracle.
В ответ на это я нацелил свою сборку на платформу x86:
К моему удивлению, та же ошибка сообщение появилось при попытке выполнить эту новую сборку на платформе 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-битный флаг ко всем сборкам, которые идут с моим приложением. По-прежнему выдает то же сообщение об ошибке.
Я озадачен ... озадачен ... озадачен ...