1

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

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

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

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

现在,我不知道为什么会这样。我已经检查了 PATH 环境变量,但它们看起来不错。任何想法为什么这在我的机器上有效,但在部署到测试代理时无效?

编辑:在 devart 中添加了堆栈跟踪:

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()
4

2 回答 2

0

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

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

于 2012-07-26T12:24:58.890 回答
0

在控制台项目中面临同样的问题。我通过转到 项目属性->编译->平台的目标并选择 x86 来更改编译平台设置来修复它。

于 2020-05-12T15:25:32.103 回答