我想部署一个使用Oracle的ODP.net的客户机应用程序,但我不想在每台机器上都安装ODP.net。相反,我希望将托管dll oracle.dataaccess.dll复制到每台机器上,并将它所依赖的本机dll放在共享磁盘上。
通过反编译oracle.dataaccess.dll代码,我看到它调用了一个方法,该方法从注册表获取本机dlls的位置。因此,除了在每台机器上复制oracle.dataaccess.dll之外,我还必须添加指向共享磁盘上的本机dll的注册表项。
我的问题是:人们是否预见到这种odp.net部署技术会带来任何问题?
发布于 2011-12-10 19:43:21
1) ODP.NET目前是托管和非托管DLL的混合体。它还依赖于来自Oracle客户端的低级非托管DLL-例如用于网络等。
2)在部署到的每台计算机上都需要所有这些必需的ODP.NET和客户端DLL。
3)一个潜在的解决方案可以让您更容易做到这一点,那就是查看"XCOPY“部署包。请参阅ODP.NET下载页面。这是一个较小的安装,允许您编写自己的自定义安装程序。您可以将这些XCOPY文件包含在您自己的安装中。
4) Oracle将在2012年进行完全托管提供程序的测试版,这将使这种情况变得更好(总大小将只有几兆字节)。
克里斯蒂安·谢伊
甲骨文
发布于 2012-08-17 12:39:51
您需要从最新客户端获得的唯一文件是: Oracle.DataAccess.dll oci.dll或aociicus11.dll OraOps11w.dll
只需确保它们被复制到输出目录,一切都会正常工作。不需要在任何地方注册任何内容。但是,您需要使用各自体系结构的DLL创建单独的x86和x64构建,因为任何.NET应用程序都将在32位操作系统上以32位模式运行,而在64位操作系统上以64位模式运行。
发布于 2011-11-22 18:19:06
因为它们是非托管的,所以我假设它们在网络路径上是正常的,尽管这应该很容易测试。但是,我建议您最好像here那样更改DllPath配置设置,而不是更改注册表设置。
https://stackoverflow.com/questions/8224986
复制相似问题