是否可以使用ODP 11 xcopy部署而不更改PATH?

时间:2008-12-03 21:56:05

标签: .net oracle odp.net

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

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

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

5 个答案:

答案 0 :(得分:4)

System.Environment.SetEnvironmentVariable允许您修改流程环境块。不过,这对于臭名昭着的PITA而言是否足以让人猜测。 ;)

答案 1 :(得分:3)

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

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

如果您是这种情况,则只能在您的申请中分发Oracle Instant Client。有关详细信息,请参阅this question

答案 2 :(得分:2)

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

答案 3 :(得分:0)

答案 4 :(得分:0)

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