Как я могу развернуть приложение .NET, использующее ODAC, без установки всего компонента пользователю?
Я написал приложение C #, которое подключается к базе данных Oracle 10g. Используя Oracle Data Access Component 11.2 «ODAC», он отлично работает на моей машине.
И теперь я хочу развернуть приложение и установить его в другую «чистую машину», которая имеет только .NET Framework! И я не хочу устанавливать весь компонент ODAC для пользователя!
Как я мог это сделать? Я попытался включить все необходимые DLL-файлы в папку bin, например:
- Лучшие практики ILMerge
- Объединить msi и exe
- развертывание фреймворка zend на сервере
- Установите службу Windows .NET без InstallUtil.exe
- Как вручную установить веб-сервис на Tomcat 6?
- oci.dll
- OCIW32.DLL
- Oracle.DataAccess.dll
- orannzsbb11.dll
- oraocci11.dll
- oraociicus11.dll
- OraOps11w.dll
- msvcr71.dll
Но все-таки это не сработало. Что мне делать, чтобы решить эту проблему?
- Как установить регистр переменной для сохранения между играми в недоступном?
- .war vs .ear file
- Создание Windows Installer для программ на Java
- System.IO.FileNotFoundException: не удалось загрузить файл или сборку «X» или одну из ее зависимостей при развертывании приложения
- Приложение .NET не может запускать и получать XamlParseException
- Запуск приложения на основе .net без .NET Framework
- Использование Maven для развертывания
- ASP.NET MVC на IIS6
Я не уверен, связана ли ваша проблема с необходимостью установки клиента 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 = пароль для подключения.