Не удалось загрузить файл или сборку для Oracle.DataAccess в .NET - PullRequest
28 голосов
/ 23 декабря 2009

Когда я пытаюсь запустить простую программу для доступа к oracle, я получаю это сообщение

Не удалось загрузить файл или сборку 'Oracle.DataAccess, Версия = 2.111.7.20, Культура = нейтральная, PublicKeyToken = 89b483f429c47342 ' или одна из его зависимостей. Система не может найти указанный файл.

Я проверил \ windows \ assembly, и он там, но его нет в GAC (gacutil -l). Я не могу добавить в GAC (gacutil -i [path]. Я получаю «неизвестную ошибку».

Кто-нибудь испытывает то же самое?

Ответы [ 9 ]

23 голосов
/ 24 февраля 2010

Я собираюсь дать вам ответы из того, что я только что прошел на Windows Server 2008 R2, который является 64-битной операционной системой. Набор приложений, который мне дали, был разработан с использованием .net 3.5 x86 с более старыми библиотеками DLL, и я застрял, потому что установил новые клиенты x64 из oracle.

Я обнаружил следующее: Установите последний клиент x64 из Oracle для Windows Server 2008. Я считаю, что это будет клиент 2.7.0. Когда вы выбираете установку, убедитесь, что вы делаете пользовательские настройки и выбираете библиотеки .NET. Сконфигурируйте свои файлы tnsnames и протестируйте tnsping для вашего источника данных.

Далее, если вы используете 32-битное приложение, установите ту же версию клиента для 32-битной. Кроме того, выполните ту же процедуру установки и выберите тот же дом.

Когда вы закончите, вы обнаружите, что у вас есть одно приложение / продукт с двумя клиентскими каталогами (Client1 и Client2).

Если вы перейдете в каталог Windows / сборки, вы обнаружите, что у вас есть ссылка на Oracle.DataAccess.dll (x2) с одной для x86 и одной для AMD64.

Теперь, в зависимости от того, есть ли у вас разработчики или вы сами разрабатываете на машине, вам может быть хорошо, однако, если они используют более старые драйверы, вам нужно выполнить последний шаг.

Перейдите в каталог app \ name \ product \ version \ client_1 \ odp.net \ publisher policy \ 2.x. Здесь включены два файла политики. используйте gacutil / i для установки Policy.2.111.Oracle.DataAccess.dll в GAC. Это перенаправит устаревшие вызовы Oracle ODP на более новые версии. Так что, если кто-то разработал с клиентом 10g, теперь он будет работать с клиентом 11.

К вашему сведению - некоторые могут устанавливать последнюю версию ODP.NET с 2.111.7.20. Основной клиент oracle поставляется с 2.111.7.0. У меня не было успеха с 7.20, но у меня не было проблем с клиентом 7.0.

7 голосов
/ 17 ноября 2010

Я компилировал в x64, просто используйте x86, и это решит проблему

2 голосов
/ 16 декабря 2015

Решение довольно простое, все зависит от того, как вы определяете вещи на сервере / рабочей станции в отношении вашего проекта Visual Studio.

Сначала проверьте версию библиотеки Oracle, которую вы используете, в вашем случае 2.111.7.20. Затем перейдите в Windows GAC, расположенный в папке Windows home-> Assembly.

Прокрутите вниз до Oracle dll, она обычно называется Oracle.DataAccess или Oracle.Web. Найдите нужную версию и запишите, если написано x86 или AMD64.

В visual studio убедитесь, что ваша целевая платформа совпадает с dll в GAC, поэтому, если в папке GAC указано x86, убедитесь, что целевой платформой является x64, а другой x64. Вы можете установить это в свойствах проекта Visual Studio, в разделе build / platform target.

Также убедитесь, что ваша ссылка в ссылках вашего проекта указывает на точно такую ​​же версию на компьютере разработчика.

С этим все должно работать нормально.

Обычно я сначала проверяю сервер, поскольку в корпоративной среде часто проще изменить версию локальных зависимостей, а затем попросить администратора сервера выполнить установку другой библиотеки DLL.

2 голосов
/ 31 января 2014

У меня была такая же проблема.

Решением было изменить платформу моего текущего решения на x64.

Для этого в Visual Studio щелкните правой кнопкой мыши решение> Configuration Manager> Active Solution Platform.

2 голосов
/ 26 сентября 2011

Как указано в первом ответе, существуют 32/64-битные сценарии, которые вводят в заблуждение разработчиков и ошибок времени исполнения.

Решение всегда состоит в том, чтобы попытаться получить правильные результаты: Какое программное обеспечение и ОС вы установили .

Чтобы просмотреть небольшой список сценариев с драйвером Oracle и решением, посетите эту запись .

1 голос
/ 18 апреля 2016

Попробуйте сделать следующее: В Visual Studio перейдите в Инструменты / Параметры .... Проекты и решения ... Веб-проекты ... Убедитесь, что флажок 64-разрядной версии IIS Express снят.

1 голос
/ 04 августа 2014

В моем случае ошибка гласит, что в сборе

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

На данный момент я только что установил клиент Oracle: 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

Исправлено, один полностью отсутствующий монтажный корпус

1 голос
/ 14 марта 2014

Я переключился на управляемые сборки ODP.NET из Oracle. Мне также пришлось удалить все файлы из веб-приложений IIS, которые использовали более старые сборки. Теперь я не получаю никаких конфликтов, касающихся 32 и 64-разрядных версий, когда я отлаживаю в IIS Express против IIS. См. Следующую статью.

Easy Drive для .NET

0 голосов
/ 29 января 2014

в вашем .net проекте перейдите в справочный раздел, щелкните правой кнопкой мыши на Oracle.DataAccess dll, перейдите в свойства.

Измените настройку на "Specific Version=False". Теперь не будет конфликта версий

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...