2010-01-19 40 views
1

我有一個使用少數第三方DLL的項目,並且正在開發部署的安裝項目。在Visual Studio 2005中運行(調試)時程序運行良好,但在「安裝」時不運行(調試)。在.NET項目中找不到DLLs

將DLL正確複製到應用程序文件夾。我的理解是,DLL沒有被安裝程序註冊。 「以便在檢索COM類工廠CLSID組件{GUID}失敗,原因是以下錯誤:80040154」

在安裝項目,每個DLL組件具有「註冊」屬性設置爲「vsdraCOM」,這是我思想本應該引發註冊。

編輯:看來他們都是.NET程序集,因爲我的應用程序,註冊應該不成問題。標題被改變以反映這一點。

這似乎應該是非常基本的,但我不應該做什麼?

回答

0

正在使用的DLL在安裝程序中出現在供應商的文檔,代碼示例等SDK包中。我將所有移動到新計算機時傳輸的鬆散文件都拿出來,但沒有發現我實際上沒有在新計算機上運行安裝程序。

安裝SDK必須做任何需要註冊 - 我的應用程序現在運行正常。我可以通過運行兩個安裝程序來安裝在目標機器上,這是可以接受的。

0

使用Dependency Walker(http://dependencywalker.com/)檢查DLL可能試圖加載的內容。

然後嘗試在註冊表下的HKCR \ CLSID下搜索您的GUID,其中InprocServer32應包含成功註冊DLL的路徑。

+0

看起來像這些是.NET程序集。根據Dependency Walker,每個只依賴於MSCOREE.DLL,它似乎是.NET運行時(?)。有趣的是,埋在卡片屋裏,MSJAVA.DLL似乎不見了。 Visual Studio也顯示每個依賴於.NET Framework,但也相互依賴(包括兩者)。最後一個沒有在Dependency Walker中顯示。 最後,我無法在註冊表中找到GUID。 – mbmcavoy 2010-01-20 01:00:06

+0

嗯,我正在深入探究MSJAVA.DLL的問題,並且根據Dependency Walker常見問題解答,它是一個可選組件,它可以丟失... – mbmcavoy 2010-01-20 01:04:13

0

如果這些是自注冊的正常COM對象(不是.NET程序集)(即,您可以使用regsvr32註冊它們),那麼您想要vsdraCOMSelfReg而不是vsdraCOMvsdraCOM用於爲COM互操作註冊.NET程序集。

是的,它並不直觀。

+0

我相信這些都是.NET程序集,由於依賴關係,他們無法註冊regsrv32。 – mbmcavoy 2010-01-20 00:56:02