Не удалось загрузить файл или сборку "Oracle.DataAccess" 64-битной ODP.NET
Я использую ODP.NET
в моем проекте asp.net, чтобы приложение могло общаться с оракулом 11 g Express на сервере Windows 2008 (32-разрядная версия). В то время как на машине для разработки у меня была Windows 7 (32 бит). Я установил Windows 8 (64-битную) на компьютер для разработки и попытался запустить приложение из Visual Studio 2012. Он выдал ошибку "Не удалось загрузить файл или сборку" Oracle.DataAccess ". После небольшого поиска я понял, что мне нужно установить ODP.NET
(64-разрядная версия), чтобы использовать его на 64-разрядной машине, поэтому я удалил 32-разрядную версию и установил 64-разрядную версию ODP.NET. Удалена ссылка на старую Oracle.DataAccess
но все еще сталкивается с той же проблемой. Я что-то пропустил??
3 ответа
У меня была та же проблема, и после некоторых проб и ошибок я обнаружил, что проблема связана с 32-битной или 64-битной платформой.
- Когда мы развернем 32-битную версию Oracle.DataAccess.dll вместе с веб-приложением в 64-битной среде и установим ODP.net поверх сервера, эта ошибка произойдет.
- Одним из решений является удаление Oracle.DataAccess.dll из папки bin, и правильная ссылка будет автоматически разрешена.
- Второе решение состоит в том, чтобы установить ссылочное свойство CopyToLocal=false для Oracle.DataAccess.dll, и, следовательно, оно не будет использоваться при сборке при развертывании в IIS, и ошибка не возникнет.
- Третье решение, которое я предпочитаю, - это включить 32-битные приложения для вашего пула приложений, и вы не столкнетесь с этой проблемой снова, независимо от того, присутствует ли Oracle.DataAccess.dll в папке bin или нет.
Надеюсь это поможет..
Для установки ODP.NET я использую 64-битный ODAC
После установки, чтобы проверить, правильно ли установлена 64-битная сборка Oracle.DataAccess, перейдите в папку: c:\Windows\Microsoft.NET\assembly\GAC_64
и проверьте, есть ли там папка Oracle.DataAccess.
В папке должна быть подпапка, содержащая версию dll Oracle.DataAccess, которую вы используете.
В Visual Studio вы должны добавить ссылку, посмотрев в Сборки-> Расширения (не используя Обзор)
Также проверьте конфигурацию сборки в Visual Studio, чтобы убедиться, что активная платформа решения вашего приложения является 64-битной.
Чтобы запустить ваш сайт, вы должны использовать IIS, поскольку сервер разработки Visual Studio работает только в 32-битном режиме.
В пуле приложений IIS настройте приложение на работу в 64-битной среде. (Настройка в расширенных настройках)
Разрядность машины не имеет значения - разряды хост-приложения имеют значение. Веб-сервер разработки, входящий в состав Visual Studio, является 32-разрядным, поэтому вам необходимо установить 32-разрядную версию odp.net. Вместо этого вы можете запустить его в IIS, если хотите протестировать 64-битную версию. Я устанавливаю оба.
В этом случае, я предполагаю, что проблема, скорее всего, связана с номером версии - ваше приложение изначально ссылалось на другую версию, чем та, которую вы установили. Простая вещь, которую нужно сделать, это удалить / повторно добавить ссылку на недавно установленный Oracle.DataAccess.dll. Однако тот факт, что вы должны сделать это, в некоторой степени указывает на то, что вы устанавливаете полный клиент, а не просто установку ODP.net. По какой-то причине (за исключением того, что универсальный установщик oracle является полным мусором), полный клиент не включает политику издателя (которая будет перенаправлять ссылку), но установка odp.net делает это.