【问题标题】:Is it possible to use ODP 11 xcopy deployment and not change the PATH?是否可以使用 ODP 11 xcopy 部署而不更改 PATH?
【发布时间】:2010-09-25 05:31:10
【问题描述】:

我有一个使用 Oracle.DataAccess 进行连接的应用程序。我已经发现使用 ODAC 11 和 xcopy 部署可以减少占用空间。这已经是一个很大的胜利了。

不过,理想情况下,我们希望不必更改任何路径变量,并将所有 ODAC 文件放在应用程序文件夹下的子目录中。是否可以在不更改 PATH 变量的情况下执行此操作?有没有办法设置一个临时 PATH 变量?我们可以将所有必需的文件复制到应用程序文件夹吗?

总体思路是,我们希望尽可能地将 ODAC 文件与可能在同一客户端上运行的其他应用程序隔离开来。

【问题讨论】:

    标签: .net oracle odp.net


    【解决方案1】:

    如前所述,this StackOverflow 问题讨论了如何实现您的目标。 This 答案很好。我评论了那个答案,我能够使用 Easy Connect 连接字符串并在我的生产机器和我的开发机器上使用相同的二进制文件,只需将 Instant Client Lite DLL 和 Oracle.DataAccess.dll 复制到生产中的应用程序文件夹机器。在我的开发机器上,我安装了完整的 Oracle 客户端。这样就完全不需要修改路径语句了。

    【讨论】:

      【解决方案2】:
      【解决方案3】:

      更改环境变量是一个很好的技巧,但只是为了学术完整性,我认为embedding assembly resolving 实际上是解决此问题的“正确”方法,即使它是更多代码。

      【讨论】:

        【解决方案4】:

        作为Marksuggested,您始终可以让您的应用程序更改当前进程的环境变量。请注意,显然,您必须在进行任何 ODP .NET 调用之前执行此操作。

        另请注意,如果您只需要纯 ODP .NET 功能,我的意思是您特别不需要:

        如果是这种情况,您只能将Oracle Instant Client 与您的应用程序一起分发。详情请见this question

        【讨论】:

        • 非常感谢您的评论。事实证明,我们的应用程序确实需要第三方组件的 ODBC 连接。我对ODBC一无所知。是否有由 MS 提供的 Oracle 提供商?你碰巧对它的表现有任何经验吗?
        • Oracle 的 MS 提供程序(ODBC 和 OLE DB)是 MDAC (microsoft.com/downloads/…) 的一部分,但它们需要 Oracle 客户端。所以你毕竟必须改变你的路径......在这个阶段,我会选择完整的 ODAC。
        【解决方案5】:

        System.Environment.SetEnvironmentVariable 允许您修改进程环境块。不过,对于臭名昭著的 PITA Oracle 来说,这是否足够,尚无定论。 ;)

        【讨论】:

          猜你喜欢
          • 2012-04-08
          • 1970-01-01
          • 2012-10-26
          • 2012-02-26
          • 1970-01-01
          • 2016-06-07
          • 1970-01-01
          • 2013-03-09
          • 1970-01-01
          相关资源
          最近更新 更多