在MSTest代理上运行时,Oracle oci.dll丢失

时间:2012-07-24 12:15:16

标签: c# oracle unit-testing mstest devart

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

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

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

System.IO.FileNotFoundException:无法从家中加载Oracle客户端库oci.dll ..

现在,我不知道为什么会这样。我已经检查了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()

2 个答案:

答案 0 :(得分:0)

感谢您的回复,得到了正确的指针。显然,当64位线程尝试加载32位OCI.DLL时会出现问题,反之亦然。但是,我玩了测试设置和构建与32/64相关的设置,但无济于事。

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

答案 1 :(得分:0)

在控制台项目中遇到相同的问题。我通过更改编译平台设置来修复它 项目属性-> 编译-> 平台目标,然后选择x86。