1

データベース関連の統合テストを MSTest テスト エージェントで実行しようとしています。私たちは、devart dotconnect で c# と 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

コンソール プロジェクトで同じ問題に直面しました。プロジェクトのプロパティ- >コンパイル- >プラットフォームの宛先に移動し、 x86を選択して、コンパイルプラットフォームの設定を変更することで修正しました 。

于 2020-05-12T15:25:32.103 に答える
0

返信ありがとうございます。適切なポインタを取得しました。どうやら問題は、64 ビット スレッドが 32 ビット OCI.DLL をロードしようとしたときに発生し、その逆も同様です。ただし、32/64 に関連するテスト設定とビルド設定をいじってみましたが、役に立ちませんでした。

とにかく、テスト エージェントに64 ビットの Oracle クライアントを追加でインストールすることで、問題を解決できました。何らかの理由で、QTAgent スレッドが正しい OCI.DLL を見つけたようです。

于 2012-07-26T12:24:58.890 に答える