2011-08-03 15 views
0

私はいくつかの社内ActiveXブラウザコントロールに対するアクションを自動化しようとしています。Interopアセンブリを使用している場合(ファイルが存在する場合でも)FileNotFoundException

私は、私はこれをテストしたときに

2週間前、それはしかし、今と同じコードをしようと、魔法のように働い自動的Interop.AssemblyName.dll

を生成し、私のC#コードでCOM型への参照を追加しましたinteropアセンブリで見つかったいくつかの型への参照を取得しようとすると、FileNotFoundExceptionで失敗します。

エラーの原因を正確にどのようにトレースすることができますか?私のテストアプリケーションのexeのすぐ隣にInteropファイルが存在します。

他に何が探していますか?

この種の相互運用性と問題に関する良いチュートリアルはありますか?

答えて

0

間違った場所を探しています...あなたが期待している場所以外の場所です。これを追跡する最も簡単な方法はExceptionの詳細を見ることですが、それが明らかでない場合は、SysinternalsのProcess Monitorを使用して、何が起こっているのかを正確に追跡します。

+0

質問は、なぜ別の場所で見えるのですか? –

+0

Dunno ...コードを見なければならないでしょう。しかし、たとえば、DebugとReleaseビルドの設定を変更すると、この問題が発生する可能性があります。 –

+0

これはまだデバッグビルドです。そのファイルは、期待される場所に存在します(ProcMonで検証済み)。 –

0

私はWMIクラスでこの問題を抱えていましたが、COMオブジェクトにフックして情報を取り戻しました。 WMIはCOMオブジェクトのInteropファイルが見つからないというイベントログに書き込みました。

私は、例外を生成している間にすべてのディスクI/Oをキャプチャし、探している場所と見つからないことを確認しながら、interopファイルを確認します。

...はい、私のinteropファイルは私の主なアプリケーションの横にありますが、ディレクトリはシステムが見つけようとしたときに検索された場所の1つではありませんでした。奇妙な。

私のinteropファイルをC:\ Windows \ System32 \ wbemにコピーしました。これは魔法のように動作し始めました(Windows XP x86)。

関連する問題