2010-03-10 78 views
5

0x80040154的System.Runtime.InteropServices.COMException是否總是表示該類未註冊?我收到一個COMException,其中顯示「檢索具有CLSID {29131539-2EED-1069-BF5D-00DD011186B7}的組件的COM類工廠失敗,原因如下:80040154.」它試圖加載Interop.Domino.dll,它是我從Add Reference的COM選項卡中獲得的名爲「Lotus Domino Objects」的參考,它指向Notes程序文件夾中的domobj.tlb。0x80040154的COMException總是'Class not registered'?

幾年前我寫了代碼 - 這是我用互操作做過的唯一的事情,可以公平地說,我從來沒有真正去掌握它。

將代碼移動到2008 R2服務器(因此它是x64)後,我再次看到此錯誤。它是在XP上編寫的,並在2003年運行(均爲x86)。爲了診斷問題,我構建了一個Win7 x86(因爲沒有R2 x86)盒子,它工作。我還構建了一個2003 x64盒子,並且因爲出現相同的錯誤而失敗,所以看起來它是由移動到x64架構引起的。當互操作讓x86 COM DLL在x64機器上工作時,我應該做些什麼?

回答

4

我必須努力建立並運行在Windows 7 64位.NET應用程序調用interop.domino.dll,這是32同樣的問題位只。

爲了解決這個問題,我重新編譯了.NET應用程序,以便在x64操作系統上運行時專門以x86的身份運行。

我在使用Visual Studio 2010速成版,這是專門針對x86平臺的付費版本。

的解決方案是:

  1. 單擊工具>選項>項目和解決方案
  2. 勾選「顯示高級生成配置」,然後單擊確定
  3. 單擊工具>設置>選中專家設置來看看構建配置管理器
  4. 單擊BUILD> CONFIGURATION MANAGER選擇平臺下拉到X86並單擊關閉
  5. 現在重建項目
相關問題