.net 开发oracle 免客户端程序

如果程序要被大量部署,每次都要安装oracle客户端会非常麻烦。用odp.net开发就可以免去安装客户端。
odp.net 依赖的基本dll如下:
Oracle.DataAccess.dll,oci.dll,orannzsbb11.dll,oraociei11.dll,OraOps11w.dll
如何提取这些文件(以oracle11g为例)
首先安装 11g客户端管理员(运行时应该也可以),再安装(instance client)
文件名                                           目录
Oracle.DataAccess.dll                     (管理员安装目录)\odp.net\
oci.dll                                           (管理员安装目录)\bin\
orannzsbb11.dll                            (管理员安装目录)\bin\
oraops11w.dll                               (管理员安装目录)\bin\
oraociei11.dll                                (instance client安装目录)\bin\
如何让你的程序能够同时支持64位
1.32位 和 64位的oracle客户端版本要一致,这样可以确保上面提到的5个dll版本是一致的,
   尤其是32位和64位的Oracle.DataAccess.dll 的publickeytoken必须是一样的。
2.如果开发的时候引用的是32位程序集,编译64位的程序时要在config文件中添加程序集依赖
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Oracle.DataAccess"
        publicKeyToken="89B483F429C47342"
        culture="neutral" />
        <bindingRedirect
          oldVersion="2.112.1.1"
          newVersion="2.112.1.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

------------------------------------------------------------------------------

最近在部署的时候发现以上方法并不能成功的脱离Oracle客户端,在此向诸位读过此文从而产生误导的朋友表示真诚的道歉。

------------------------------------------------------------------------------

通过reflector反编译Oracle.DataAccess,查看进程依赖的dll,几经周折发现以上dll 还与如下几个文件关联:

msvcr80.dll,msvcp80.dll,msvcm80.dll,

Microsoft.VC80.ATL.manifest,Microsoft.VC80.CRT.manifest,Microsoft.VC80.ATL.manifest

还有一个疑问:在reflector中选择 MC++ 可以看到的 Oracle.DataAccess 源代码,可是导出后发现 类 没有具体的实现,包括用C#写的程序集 导出c++后文件里的类也是空的,不明原理,求知情者解答。

转载于:https://www.cnblogs.com/leeshd/archive/2010/11/11/1874828.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值