我编写了一个连接到Oracle 10g数据库的C#应用程序。使用Oracle Data Access Component 11.2“ODAC”,它可以在我的机器上完美运行。
现在我想部署应用程序并将其安装在另一台只有.NET Framework的“干净机器”中!我不想将整个ODAC组件安装给用户!
我怎么能这样做?我试图将所有必要的DLL文件包含到我的bin文件夹中,例如:
但它仍然没有用。我该怎么做才能解决这个问题?
答案 0 :(得分:27)
您无需单独安装任何Oracle客户端。 我在.exe:
所在的目录中安装了以下内容 Oracle.DataAccess.dll
oci.dll
OraOps11w.dll
oraociei11.dll
msvcr71.dll
确保您的项目引用了您提供的相同Oracle.DataAccess.dll。 这适用于从未安装过oracle客户端的新电脑。
我通过指定像这样的连接字符串避免使用TNSNAMES.ora
connectionstring = 数据源=“(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST =)(PORT =))”+ “(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME =)))”
如果您正在使用TNSNAMES.ora,只需将连接详细信息剪切并粘贴到单个行字符串中即可。
见 What is the minimum client footprint required to connect C# to an Oracle database?
了解更多信息。
有关如何获取上述dll的信息,请参阅本教程:http://begeeben.wordpress.com/2012/08/01/accessing-oracle-database-without-installing-oracle-client/
答案 1 :(得分:13)
自此问题发布以来,Oracle Managed Client现已可用(由Oracle提供)。我一直在使用它没有问题。不需要搜索DLL或特殊配置。只需添加包,修改配置文件,即可进行设置。甲骨文的NuGet Link和an article关于它......
由于此客户端完全使用.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"/>
答案 2 :(得分:9)
我不确定您是否需要安装Oracle客户端以及~50 MB ODAC安装或仅支持独立ODAC。
如果担心必须安装Oracle客户端和ODAC,您可以使用Oracle Instant Client吗?这是安装Oracle客户端的最小尺寸方法。您还需要ODAC xcopy补充。
如果你担心的只是ODAC安装,我认为可用的空间不足。