在MSTest代理上运行时,缺少Oracle oci.dll。

问题描述 投票:1回答:2

我试图让一些数据库相关的集成测试在MSTest测试代理上运行。我们使用c#和一个带有devart dotconnect的oracle db。

由于我们需要使用间接模式,我在测试代理上安装了devart和oracle客户端。

当我在本地机器上执行测试时,测试运行得很顺利。但是当在测试代理上(远程)执行时,它找不到客户端的 oci.dll,这是某个地方的依赖。

System.IO.FileNotFoundException: Can not load Oracle client library oci.dll from home ...。

现在,我不知道为什么会发生这种情况。我已经检查了PATH环境变量,但它们似乎没有问题。有什么想法,为什么在我的机器上可以工作,而在部署到测试代理时却不行?

编辑:在devart中添加了stacktrace。

Devart.Data.Oracle.OracleHome.get_ClientVersion()
Devart.Data.Oracle.aw.a(Boolean A_0, Boolean A_1, OracleHome A_2, Boolean A_3)
Devart.Data.Oracle.OracleInternalConnection..ctor(aa connectionOptions, OracleInternalConnection proxyConnection)
Devart.Data.Oracle.cs.a(k A_0, Object A_1, DbConnectionBase A_2)
Devart.Common.DbConnectionFactory.a(DbConnectionPool A_0, k A_1, DbConnectionBase A_2)
Devart.Common.DbConnectionPool.a(DbConnectionBase A_0)
Devart.Common.DbConnectionPool.GetObject(DbConnectionBase owningConnection)
Devart.Common.DbConnectionFactory.a(DbConnectionBase A_0)
Devart.Common.DbConnectionClosed.Open(DbConnectionBase outerConnection)
Devart.Common.DbConnectionBase.Open()
Devart.Data.Oracle.OracleConnection.Open()
c# oracle unit-testing mstest devart
2个回答
0
投票

谢谢你的回复,得到了正确的指向。显然,当一个64位线程试图加载一个32位的OCI.DLL时,问题就会发生,反之亦然。不过,我玩了一下测试设置和构建设置相关的3264的东西,但没有用。

无论如何,我能够通过另外的方法来解决这个问题。安装64位Oracle客户端 的测试代理上。出于某种原因,QTAgent线程似乎找到了正确的OCI.DLL。


0
投票

在一个控制台项目中也遇到了同样的问题。我通过改变编译平台的设置来解决这个问题,方法是通过在 项目属性 -> 汇编 -> 平台的目的地 并选择x86。

© www.soinside.com 2019 - 2024. All rights reserved.