【问题标题】:Deploy a .Net application with Oracle Client 11使用 Oracle Client 11 部署 .Net 应用程序
【发布时间】:2012-10-10 21:23:00
【问题描述】:

我有 followed this post,但它不起作用。谁能告诉我还要检查什么?

我遵循的步骤:

  1. 我将当前安装的 Oracle (11gR2_x32) 中的 dll 添加到项目的根目录中。我没有像帖子所说的那样使用基本精简版,但我认为 dll 是一样的,对吧?

    • oci.dll
    • ociw32.dll
    • Oracle.DataAccess.DLL
    • orannzsbb11.dll
    • oraocci11.dll
    • oraociicus11.dll
    • OraOps11w.dll
  2. 在我的项目中选择每个 dll 并将“构建操作”设置为“内容”并将“复制到输出目录”设置为“始终复制”

  3. 添加了对 Oracle.DataAccess 的引用

  4. 在我的 vb 代码中添加了“导入 Oracle.DataAccess.Client”。

代码运行良好,但仍需要用户安装 Oracle。我的意图是不让他们安装 oracle。我验证了当他们安装我的程序时,所有 dll 都存在于程序文件夹中。

我还能检查什么?

【问题讨论】:

  • 这些 dll 用于 Oracle 客户端 - 不是服务器
  • 正确,我想要客户端。我没有尝试安装服务器。服务器已经存在于别处。我的程序只是访问服务器。
  • 那么它应该工作 - 你收到错误消息了吗?您可能也需要 ODP.net dll - 看看 stackoverflow.com/a/1258322/92837

标签: vb.net oracle oracleclient


【解决方案1】:

代码运行良好,但仍需要用户安装 Oracle。我的意图是不让他们安装 oracle。

据我所知,没有真正的“嵌入式”Oracle,您无法避免安装 Oracle 数据库服务器。如果你真的需要embedded database,有几个不错的选择,包括但不限于:SQLite、MS SQL Server Compact 或 LocalDB1、Interbase/Firebird 等...

几年前,Oracle 为公司运行了一项许可计划,您可以将 Oracle 设置集成到您自己的设置中,并使其对用户“不可见”,但这仍会安装完整的 Oracle 服务器。例如,早期版本的 PTC Pro/INTRALINK 就是这样安装的——您不需要单独的 Oracle 安装。我不知道这个许可计划是否仍然可用,但即使它是可用的,您也可能正在寻找一项非常重大的财务投资。

顺便说一句,Oracle 的完全托管 .NET 提供商是 currently in beta - 这将进一步简化客户端部署并消除 32 位与 64 位不匹配。


1 LocalDB 在技术上不像“进程内”那样“嵌入”,但这可能不会对您的最终用户产生影响。

【讨论】:

  • 不,我认为您误解了我的问题。我没有尝试在我的程序中嵌入数据库,而是尝试访问已经存在的数据库(在我的程序外部)。
  • @malt_man 然后用户不需要“安装 Oracle”。它应该按原样工作。 工作的典型原因是如果您为“任何 CPU”构建并且用户的机器恰好与您的机器具有不同的“位数”。您应该始终构建“x86”或“x64”(或两者),并分别分发一组单独的本机 Oracle DLL。正如我已经提到的,完全托管的提供者最终应该解决这个问题。另外,您使用的是哪种连接字符串?它是否取决于 tnsnames.ora,如果是,您是否也分发它?您的用户是否收到任何错误消息?
猜你喜欢
  • 2018-01-23
  • 1970-01-01
  • 2011-10-05
  • 1970-01-01
  • 2013-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多