BadImageFormatException при использовании Oracle Client 64 бит и Visual Studio 2010!

20 Data-Base [2011-05-03 16:11:00]

Один из членов нашей команды разработчиков получил сообщение об ошибке

Попытка загрузить клиентские библиотеки oracle бросила BadImageFormatException

Кажется,

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

Но именно я настроил систему - вот спецификации:

  • 64-разрядная версия Windows 7
  • Visual Studio 2010 Premium
  • Oracle Client 11g R2 64Bit установлен как Runtime

Любые мысли?

windows-7 windows-7-x64 oracle11g visual-studio-2010 oracleclient


10 ответов


9 Решение HaggardPete [2011-05-16 19:16:00]

Я видел это несколько раз недавно при запуске Visual studio на 64Bit O/S. Простым рабочим столом является установка 32-битного клиента на 64-разрядную машину разработки.

С уважением, Пит


19 Atilla Ozgur [2011-12-15 16:49:00]

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

Установлены два клиента

C:\oracle\product\11.2.0\client32Bit
C:\oracle\product\11.2.0\client64Bit

Контролируйте свой путь переменная среды. Какой клиент Oracle является первым, он загружается перед другим.

 echo %PATH%
 XXXX;C:\oracle\product\11.2.0\client64Bit\BIN;XXX

Поскольку мой 64-битный клиент Oracle является первым в PATH, VS.NET пытается использовать его для соединений Oracle и выбрасывает Bad Image Exception.

  set PATH=C:\oracle\product\11.2.0\client32Bit\BIN;%PATH%
  REM Visual Studio 2008
  "C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe"
  REM Visual Studio 2010
  "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe"

После этого вы можете подключиться к oracle. Конечно, вы можете поместить клиента 32Bit первым в пути, но я предпочитаю ставить 64-битный клиент до 32 бит для других приложений.


9 Keith Ketterer [2013-10-14 16:46:00]

У меня была такая же ошибка после обновления до Windows 7. Я разрешил ее, изменив целевой объект платформы на x86 на вкладке "Сборка" на странице "Свойства" в Visual Studio


5 codemonkey [2015-04-29 22:15:00]

Те же проблемы, с которыми вы можете столкнуться также в Visual Studio 2013 и 64-битном Oracle Client (11 и 12 версий). Мое решение:

a) Настольный проект. Свойства проектa > Сборкa > отключить флажок "Предпочитаю 32-бит".

b) проект или веб-сайт ASP.NET. Главное меню > ИНСТРУМЕНТЫ > Функции > Проект и решения > Веб-проекты > Включите флажок "Использовать 64-битную версию IIS Express для веб-сайтов и проектов".


3 SharpCoder [2013-03-08 14:00:00]

Я изменил поддержку 32-битной поддержки на ЛОЖЬ в моем пуле приложений в IIS7. Это сработало для меня. Мне было легко. Приветствия:)


0 Nawaf [2013-02-17 20:51:00]

Быстрое и простое решение этой проблемы вы должны выполнить только следующие шаги:

  • Установите ODACv11.2021Xcopy_x64, запустив файл install.bat, затем проверьте "c:\oracle" как созданный путь.
  • скопируйте папку конфигурации сети [, содержащую папку администратора с файлом tnsnames.ora] в oracle 32bit, чтобы "c:\oracle" .
  • Добавлен путь "c:\oracle" к переменной среды PATH.

пользоваться

С наилучшими пожеланиями, Eng. Наваф Х. Бин Талеб.


0 thabet [2013-06-27 14:15:00]

У меня такое же исключение, и я узнал, что это произошло, когда я обновил версию MVC выше 2.0., в моем случае MVC 4.0.

Создание нового проекта в MVC 2.0 решило проблему.


0 Muru Bakthavachalam [2015-03-29 01:47:00]

Простое решение: работает для меня. попробуйте это.

Я потратил почти 4 часа, чтобы найти решение проблемы с BadImageFormatException.

Сценарий: VS 2012, я пытался впервые добавить модель сущности в базу данных Oracle. Я знал, что есть два способа добавить модель для базы данных оракула:

  • Подключить базу данных oracle с использованием сервера (где будет создана строка соединения и которая может использоваться при добавлении модели)
  • Добавить модель с помощью существующей строки подключения (созданной в шаге 1).

Но я был поражен на первом шаге с предупреждением BadImageFormatException, и я нашел решение. Разрешение:

  • Следуйте инструкциям, приведенным в ссылке, и завершите установку клиента oracle http://www.oracle.com/technetwork/topics/dotnet/whatsnew/vs2012welcome-1835382.html
  • После успешного завершения установки, затем выполните простой шаг, т.е. добавьте модель в проект. здесь используйте существующую строку соединения из раскрывающегося списка и укажите userid/pwd.

тогда вы готовы использовать модель:)


0 Hüseyin Yağlı [2013-07-18 14:01:00]

Если вы хотите использовать 64 бит, см. мой ответ здесь:
64-битная конфигурация Oracle DataAccess

Если вы довольны 32-разрядным, просто установите 32-разрядную версию Oracle Data Access Components. Поскольку сервер разработки Visual Studio 32 бит, у вас не возникнут проблемы.


-1 Rick [2017-02-23 17:11:00]

У меня была такая же проблема, и это решение, с которым работал Muru, работало со мной:

http://www.oracle.com/technetwork/topics/dotnet/whatsnew/vs2012welcome-1835382.html

Просто установите ODAC и