2009-11-17 73 views
0

我有一個asp.net應用程序,其中包含大量引用的dll。
現在編譯項目我不斷收到這個錯誤時,似乎:編譯ASP.NET項目時出現不清楚的異常

The specified module could not be found. Exception from HRESULT: 0x8007007E 

我看到的是得到引用的dll的一個是interop.dll,我懷疑這 錯誤來自於interop.dll需要一些事實本地資源不是 註冊在系統上(請糾正我,如果我錯了請)

有反正我可以找出什麼資源(EXE,DLL,ActiveX,..)是?

回答

0

您可以使用.Net反射器(來自Redgate Software,以前稱爲Lutz Roeder的反射器)來追蹤相關性問題。這不是自動的,但它在過去對我有用。

  1. 在Reflector中打開您認爲引用缺失依賴項的應用程序的dll或exe文件。你可能會想從你提到的interop.dll開始。
  2. 右鍵單擊Reflector中的dll並選擇Disassemble。
  3. 逐個單擊每個類型,然後查找ComImport和TypeLibType屬性,它們指定所引用的任何外部COM類型的GUID。
  4. 打開regedit,並搜索HKEY_CLASSES_ROOT GUID。您應該能夠遇到與GUID匹配的接口,並使用包含另一個GUID的TypeLib子鍵。
  5. 現在使用TypeLib GUID搜索HKEY_CLASSES_ROOT。您應該找到與InProcServer32子項相匹配的子項,其中包含COM dll或exe的路徑。

如果你沒有找到任何匹配,那麼某處丟失了某些東西。瀏覽反射器可能會給你一些線索,可以幫助你追蹤丟失的東西。

或者,如果您確實發現了匹配,則可能會遇到未正確安裝的SDK或者可能需要手動註冊的其他伴隨DLL(使用regsvr32)。

希望這有助於(和合理)。