1

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

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

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

4

5 回答 5

4

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

于 2008-12-03T22:13:03.793 回答
3

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

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

如果是这种情况,您只能将Oracle Instant Client与您的应用程序一起分发。有关更多详细信息,请参阅此问题

于 2008-12-04T08:47:43.183 回答
2

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

于 2009-03-13T17:09:33.577 回答
0

是的,您可以,有关详细信息,请参阅http://ora-00001.blogspot.com/2010/01/odpnet-minimal-non-intrusive-install.html

于 2010-09-01T07:04:11.700 回答
0

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

于 2011-09-13T14:18:01.190 回答