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

Я написал приложение на 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

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

Ответы [ 3 ]

27 голосов
/ 10 декабря 2010

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

   Oracle.DataAccess.dll

   oci.dll 

   OraOps11w.dll

   oraociei11.dll

   msvcr71.dll 

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

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

connectionstring = Data Source = "(DESCRIPTION = (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/

13 голосов
/ 20 мая 2014

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

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

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

Install-Package Oracle.ManagedDataAccess

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

<configuration>
    <system.data>
        <DbProviderFactories>
          <remove invariant="Oracle.DataAccess.Client" />
          <remove invariant="Oracle.ManagedDataAccess.Client" />
          <add name="ODP.NET, Managed Driver"
               invariant="Oracle.ManagedDataAccess.Client"
               description="Oracle Data Provider for .NET, Managed Driver"
               type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        </DbProviderFactories>
      </system.data>
<configuration>

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

 <add name="MyConnectionString" connectionString="Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=IPORNAMEOFHOST)(PORT=PORTNUM)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ORACLESID)));User Id=ORACLEUSER;Password=ORACLEPASSWORD;" providerName="Oracle.ManagedDataAccess.Client"/>
  • IPORNAMEOFHOST = Это IP-адрес или DNS-имя вашего сервера.
  • PORTNUM = Это номер порта, который слушает Oracle. Обычно 1521.
  • ORACLESID = SID базы данных, к которой вы пытаетесь подключиться.
  • ORACLEUSER = Имя пользователя для подключения.
  • ORACLEPASSWORD = Пароль для подключения.
9 голосов
/ 14 октября 2010

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

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

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

...