BadImageFormatException при использовании Oracle Client 64 bit и Visual Studio 2010! - PullRequest
20 голосов
/ 03 мая 2011

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

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

Кажется

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

Но именно я настроил систему - вот технические характеристики:

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

Есть мысли?

Ответы [ 10 ]

19 голосов
/ 15 декабря 2011

Прошу прощения за добавление второго ответа, но если на одном компьютере установлены 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"

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

9 голосов
/ 14 октября 2013

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

9 голосов
/ 16 мая 2011

Недавно я видел это пару раз при запуске Visual studio на 64-битной операционной системе. Простой обходной путь - установить 32-битный клиент на вашу 64-битную машину разработки.

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

6 голосов
/ 29 апреля 2015

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

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

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

3 голосов
/ 08 марта 2013

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

0 голосов
/ 23 февраля 2017

У меня была та же проблема, и мне помогло то решение, которым поделился Муру:

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

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

0 голосов
/ 29 марта 2015

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

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

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

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

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

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

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

0 голосов
/ 18 июля 2013

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

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

0 голосов
/ 27 июня 2013

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

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

0 голосов
/ 17 февраля 2013

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

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

наслаждайтесь

Best Regards, Eng.Наваф Х. Бин Талеб.

...