winforms – 如何确定要包含的“Oracle.DataAccess.dll”版本
在将.NET 3.5
Windows窗体部署到不同环境时,我们遇到了许多无效的提供程序问题.
它适用于某些人,不适用于其他人. 有人可以帮帮我,我如何确定使用哪个版本的“Oralce.DataAccess.dll”,即9或10或11或9.1.*或10.1.*或11. *或12等. >它是否依赖于我正在安装应用程序的服务器?要么 TLDR版本: >改用12c 100%托管服务提供商. 完整版本: 首先,让我们确保我们了解旧的未经授权的提供程序(而不是新的12c 100%托管提供程序)的组件.它由两部分组成: >托管的.net组件 – Oracle.DataAccess.dll 简单来说,Oracle.DataAccess.dll几乎只是一个包装器,将.net指令转换为非托管客户端的ORACLE-NET指令. 也就是说,当您加载Oracle.DataAccess时,它会尝试查找所需的非托管客户端dll.从Oracle Documentation开始:
如果您在计算机上安装了多个客户端,则会发挥作用,因此这可能是您的问题的一部分.如果是这样,最简单的方法是在配置中使用dllPath配置变量: <configuration> <oracle.dataaccess.client> <add key="DllPath" value="c:oracleproduct1.1.0-xcopy-depBIN"/> </oracle.dataaccess.client> </configuration> 现在,直接回答你的问题 – 我不相信Oracle支持Oracle.DataAccess.dll与它的客户端不匹配(至少不会倒退).你最好的选择是安装你的应用程序安装ODP.net – xcopy version是最小的并包含“即时客户端”或者,你应该考虑最低系统要求 – 即.系统必须至少安装了odp.net的X版本.然后,当目标系统具有客户端的NEWER版本时,您可以针对该最小dll进行编译并依赖发布者策略重定向. 当然这也促使我询问建筑.您是否计划提示用户使用他们的Oracle帐户?如果没有,您必须小心保护应用程序将使用的共享服务帐户.您可能最好调用一个代表客户端进行oracle调用的Web服务 – 为您提供另一个安全层并简化您的客户端部署. 大多数版本的ODP.net都向后兼容数据库服务器 – 您当然可以将11g提供程序与10g数据库一起使用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |