Как я могу развернуть приложение .NET, использующее ODAC, без установки всего компонента пользователю?

Я написал приложение C #, которое подключается к базе данных Oracle 10g. Используя Oracle Data Access Component 11.2 «ODAC», он отлично работает на моей машине.

И теперь я хочу развернуть приложение и установить его в другую «чистую машину», которая имеет только .NET Framework! И я не хочу устанавливать весь компонент ODAC для пользователя!

Как я мог это сделать? Я попытался включить все необходимые DLL-файлы в папку bin, например:

  • oci.dll
  • OCIW32.DLL
  • Oracle.DataAccess.dll
  • orannzsbb11.dll
  • oraocci11.dll
  • oraociicus11.dll
  • OraOps11w.dll
  • msvcr71.dll

Но все-таки это не сработало. Что мне делать, чтобы решить эту проблему?

Я не уверен, связана ли ваша проблема с необходимостью установки клиента Oracle в дополнение к установке ODAC размером 50 МБ или просто автономному ODAC.

Если проблема связана с необходимостью установки клиента Oracle и ODAC, вы можете использовать Oracle Instant Client ? Это самый маленький метод для установки клиента Oracle. Вам также понадобится дополнение Ocopic xcopy.

Если ваша проблема – это просто установка ODAC, я не думаю, что есть меньшая занимаемая площадь.

Вам не нужно устанавливать какого-либо клиента Oracle отдельно. Я установил следующее в том же каталоге, что и .exe:

Oracle.DataAccess.dll oci.dll OraOps11w.dll oraociei11.dll msvcr71.dll 

Убедитесь, что ваш проект ссылается на тот же Oracle.DataAccess.dll, который вы доставляете. Это работало на новом ПК, у которого никогда не было установленных клиентов oracleа.

Я избегал использования TNSNAMES.ora, указав строку подключения, подобную этой

connectionstring = Источник данных = “(ОПИСАНИЕ = (ADDRESS = (PROTOCOL = TCP) (HOST =) (PORT =))” + “(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME =)))”

Если вы используете TNSNAMES.ora, просто вырезайте и вставьте детали соединения в одну строку строки.

см. Каков минимальный клиентский след, необходимый для подключения C # к базе данных Oracle?

Чтобы получить больше информации.

  • EJM

Информацию о том, как получить указанные выше DLL, см. В этом руководстве: http://begeeben.wordpress.com/2012/08/01/accessing-oracle-database-without-installing-oracle-client/

Поскольку этот вопрос был опубликован, Oracle Managed Client теперь доступен (предоставляется Oracle). Я использую его без проблем. Не требует поиска для DLL или специальной конфигурации. Просто добавьте пакет, измените файл конфигурации, и вы установите. NuGet Link и статья Oracle об этом.

Поскольку этот клиент написан полностью в управляемом коде .NET, он независим от архитектуры и нет необходимости в внешних DLL, установке Oracle Client или что-то в этом роде.

Вы можете установить его в VS с помощью диспетчера пакетов.

 Install-Package Oracle.ManagedDataAccess 

Я взял его в файл machine.config (хотя он также будет работать в web.config или app.config). Я обнаружил, что это помогает избежать конфликтов с другими драйверами, которые могут быть установлены:

          

Затем для вашей строки подключения:

   
  • IPORNAMEOFHOST = Это IP-адрес или DNS-имя вашего сервера.
  • PORTNUM = номер порта, который прослушивает Oracle. Обычно 1521 год.
  • ORACLESID = SID базы данных, к которой вы пытаетесь подключиться.
  • ORACLEUSER = Имя пользователя для подключения.
  • ORACLEPASSWORD = пароль для подключения.
  • Ошибка развертывания Heroku H10 (приложение разбилось)
  • Определение версии сборки во время события после сборки
  • Как ссылаться на другую версию dll с помощью MSBuild
  • Ошибка при развертывании артефакта в Nexus
  • Горячее развертывание на JBoss - как мне заставить JBoss «видеть» изменение?
  • Лучший способ развертывания приложения Visual Studio, которое может работать без установки
  • XamlParseException после развертывания проекта WPF
  • Существует ли компилятор R?
  • Android Studio не развертывает изменения в приложении
  • Как найти полное имя сборки?
  • Универсальный ЭЛТ-модуль MSVC 2015 для локального развертывания приложений
  • Interesting Posts

    Chrome: выбор ссылки путем выполнения поиска по ее тексту.

    Поток аудио на телефонный звонок Android

    PCI e 3.0 Графические карты и материнские платы PCI e 2.0

    Как использовать объект objc_setAssociatedObject / objc_getAssociatedObject внутри объекта?

    Однопоточная квартира – не может создавать элементы управления ActiveX

    Как изменить источник изображения динамически из кода в WPF с изображением в свойствах. Ресурсы?

    Есть ли у JavaScript метод, подобный «range ()» для создания диапазона в пределах предоставленных границ?

    Использование SASS на моем сервере Debian

    Общие приложения для шаров X?

    Конец файла в C ++

    Как настроить Gmail как почтовый клиент по умолчанию в Windows 8?

    Почему многомерные массивы C # не реализуют IEnumerable ?

    ADB не найдено устройств

    Обновление для разработчиков Windows 10 – игнорируйте рекомендации «производительность и здоровье»?

    64-разрядная ОС и оперативная память

    Давайте будем гением компьютера.