Программа работает не на каждой машине, и то, где она работает, зависит от установленной версии клиента Oracle.Зачем? - PullRequest
0 голосов
/ 14 марта 2012

Я ссылаюсь на Oracle.DataAccess.dll в моем проекте. Он отлично работает на моем компьютере. Когда он переносится на компьютер другого коллеги, он больше не работает, ошибка:

    The provider is not compatible with the version of Oracle client

даже если dll скопирована в каталог приложения. Поэтому я скомпилировал ее с другой версией dll, и она все еще работала на моем компьютере, теперь она также работала на компьютере моего коллеги, но не работала на сервере клиента.

Я много гуглил, и все решения, которые я нашел, плохие - они включают установку программного обеспечения на машину - мое приложение должно работать на любом компьютере, независимо от того, что может быть установлено на нем или нет. Есть ли способ сделать это универсально?

Редактировать: Это даже допустимо, если требуется установить клиент Oracle. Но недопустимо быть требовательным к версии. Я могу выбрать любую версию библиотеки DLL и использовать ее, я хочу версию, которая всегда будет работать везде. Но, похоже, это не сработает.

Удивительно, но я никогда не сталкивался с этой проблемой с System.Data.OracleClient, которая очень похожа.

Ответы [ 2 ]

3 голосов
/ 14 марта 2012

В дополнение к управляемому Oracle.DataAccess.dll, вам также необходимо скопировать собственные OCI DLL в каталог приложения. Самый простой способ получить эти библиотеки DLL - это мгновенный клиент Oracle .

Просто будьте осторожны, используя правильную «битность» (32-битные DLL для конфигурации «x86», 64-битные DLL для конфигурации «x64» и любую битность, соответствующую целевой машине для конфигурации «Any CPU»).

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

Похоже, вы хотите, чтобы ваше приложение использовало Oracle Instant Client . Вашему приложению потребуется установить пакет Basic или Basic Lite Instant Client вместе с пакетом ODAC и настроить пару переменных среды как часть процесса установки.

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