2011-08-03 23 views
0

我正試圖自動化針對某些內部ActiveX瀏覽器控件的操作。使用Interop程序集時(即使文件存在),FileNotFoundException

我在C#代碼,自動地生成Interop.AssemblyName.dll添加到COM類型的引用

2星期前,當我測試了這一點,它的工作就像一個魅力,但現在正試圖相同的代碼嘗試獲取對interop程序集中找到的某種類型的引用時失敗,並顯示FileNotFoundException。

我該如何追溯到底什麼是錯誤的根源呢? Interop文件存在於我的測試應用程序的exe旁邊。

我還應該找什麼?

是否有任何有關互操作性和此類問題的良好教程?

回答

0

它看着錯誤的位置...一個位置,而不是你期望的位置。最簡單的方法是查看Exception的詳細信息,但如果沒有揭示,我會使用Sysinternals的Process Monitor來查找究竟發生了什麼。

+0

問題是,爲什麼它會在另一個位置? –

+0

不知道......我必須看到代碼。但是,例如,在Debug和Release build configs之間進行更改可能會導致此問題。 –

+0

這仍然是一個調試版本。該文件存在於預期的位置(通過ProcMon驗證)。 –

0

我有這個問題,我創建一個WMI類,掛鉤到一個COM對象來拉回信息。 WMI寫入事件日誌中找不到COM對象的Interop文件。

我解決了它,就像Chris B. Behrens所說的那樣:捕獲所有磁盤IO,同時產生異常並查看它在哪裏尋找,以及找不到互操作文件。

...是的,我的互操作文件與我的主應用程序在一起,但是當系統嘗試找到它時,該目錄不是搜索的位置之一。離奇。

我複製我的互操作文件到C:\ Windows \ System32 \ wbem,它神奇地開始工作(Windows XP x86)。

相關問題