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