Подтвердить что ты не робот

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

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

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

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

У кого-то есть такое же ощущение?

4b9b3361

Ответ 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.