Не удалось загрузить файл или сборку для Oracle.DataAccess в .NET.
Когда я пытаюсь запустить простую программу для доступа к oracle, я получаю это сообщение
Не удалось загрузить файл или сборку "Oracle.DataAccess, Версия = 2.111.7.20, Культура = нейтральная, PublicKeyToken = 89b483f429c47342 ' или одной из его зависимостей. Система не может найти указанный файл.
Я проверил \windows\assembly и там, но не в GAC (gacutil -l
). Я не могу добавить в GAC (gacutil -i [path]
). Я получаю "неизвестную ошибку".
У кого-то есть такое же ощущение?
Ответы
Ответ 1
Я дам вам ответы от того, что я только что просмотрел на Windows Server 2008 R2, который является 64-разрядной операционной системой. Набор приложений для библиотек, которые я получил, был разработан с использованием .net 3.5 x86 с более старыми библиотеками DLL, и я застрял, потому что я установил новых x64-клиентов из oracle.
Я нашел следующее:
Установите последний клиент x64 из Oracle для Windows Server 2008. Я считаю, что это будет клиент 2.7.0. Когда вы выбираете установку, убедитесь, что вы настраиваете ее и выбираете библиотеки .NET.
Настройте файлы tnsnames и протестируйте свой tnsp на ваш источник данных.
Далее, если вы используете 32-битное приложение, установите ту же версию клиента для 32 бит. Кроме того, следуйте одной и той же процедуре установки и выберите один и тот же дом.
Когда вы закончите, вы обнаружите, что у вас есть одно приложение/продукт с двумя клиентскими каталогами (Client1 и Client2).
Если вы перейдете в каталог windows/assemblylies, вы обнаружите, что у вас есть ссылка на Oracle.DataAccess.dll(x2) с одним для x86 и один для AMD64.
Теперь, в зависимости от того, есть ли у вас разработчики или разрабатываются сами на машине, вы можете быть в порядке, однако, если они используют старые драйверы, вам необходимо выполнить последний шаг.
Перейдите в каталог приложений\имя\продукт\версия\клиент_1\odp.net\каталог издателя \2.x. Сюда входят два файла политики. используйте gacutil/i для установки Policy.2.111.Oracle.DataAccess.dll в GAC. Это приведет к перенаправлению устаревших обращений ODP к новым версиям. Итак, если кто-то разработал клиент 10g, он теперь будет работать с 11 клиентом.
FYI. Некоторые могут устанавливать последнюю версию ODP.NET с помощью 2.111.7.20. Сам клиент oracle поставляется с 2.111.7.0. Я не имел никакого успеха с 7.20, но не имел проблем с клиентом 7.0.
Ответ 2
Я компилировался в x64, просто используйте x86, и он решит проблему
Ответ 3
Как упоминается в первом ответе, существуют сценарии 32/64 бит, которые создают проблемы с построением и runtime для разработчиков.
Решение всегда должно пытаться получить право: Какое программное обеспечение и ОС вы установили.
Для небольшого списка сценариев с драйвером Oracle и решением вы можете посетить этот post.
Ответ 4
У меня была такая же проблема.
Решение заключалось в том, чтобы изменить платформу моего текущего решения на x64.
Для этого в Visual Studio щелкните правой кнопкой мыши решение > Configuration Manager > Active Solution Platform.
Ответ 5
Решение довольно простое, все зависит от того, как вы определяете вещи на сервере/рабочей станции по отношению к проекту вашей визуальной студии.
Сначала проверьте версию библиотеки Oracle, которую вы используете, в вашем случае 2.111.7.20. Затем перейдите в Windows GAC, находящийся в папке с папкой windows home- > .
Прокрутите страницу до dll Oracle, ее обычно называют Oracle.DataAccess или Oracle.Web. Найдите нужную версию и запишите, если она говорит x86 или AMD64.
В визуальной студии убедитесь, что ваша целевая платформа такая же, как DLL в GAC, поэтому, если она говорит, что x86 в папке GAC гарантирует, что целевая платформа - x64 и другая x64. Вы можете установить это в свойствах проекта Visual Studio в рамках цели сборки/платформы.
Также убедитесь, что ваша ссылка по ссылкам в вашем проекте указывает на ту же самую версию на вашем компьютере разработки.
С этим все должно работать нормально.
Что я обычно делаю, так это сначала проверить сервер, так как в корпоративной среде часто бывает проще изменить версию ваших локальных зависимостей, а затем попросить администратора сервера выполнить установку другой dll.
Ответ 6
Я перешел на управляемые сборки ODP.NET из Oracle. Я также должен был очистить все файлы из веб-приложений IIS, которые использовали старые сборки. Теперь я не конфликтую с 32-разрядными версиями 64-разрядных версий при отладке в IIS Express и IIS. См. Следующую статью.
Легкий диск для .NET
Ответ 7
В моем случае ошибка говорит о том, что
Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342
отсутствует.
Когда я запускаю gacutil.exe /l 'Oracle.DataAccess'
, результат:
The Global Assembly Cache contains the following assemblies:
Oracle.DataAccess, Version=2.112.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=x86
Number of items = 1
В этот момент я только что установил клиент оракула: win32_11gR2_client
Затем я установил инструменты разработчика oracle ODTwithODAC112030_deleloper_tool
Теперь gacutil
говорит:
The Global Assembly Cache contains the following assemblies:
Oracle.DataAccess, Version=2.112.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=x86
Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=x86
Number of items = 2
Исправлено, один полностью отсутствующий случай сборки
Ответ 8
в вашем проекте .net перейдите в раздел справки, щелкните правой кнопкой мыши по Oracle.DataAccess dll, свойства goto.
Измените настройку на "Specific Version=False
". Теперь это будет конфликт версий
Ответ 9
Попробуйте следующее: в Visual Studio перейдите в Инструменты/Параметры.... Проекты и решения... Веб-проекты... Убедитесь, что установлен флажок Использовать 64-битную версию IIS Express.