2017-05-31 61 views
0

我想部署在COM DLL引用的c#應用程序。我知道Azure Cloud VMS是x64,因此我引用的COM lib也是x64。 我已添加.cmd文件並將其鏈接到ServiceDefinition中。看起來像它被執行,因爲如果我刪除.cmd文件,我得到一個錯誤的錯誤。 我不確定一件事:我應該註冊哪個圖書館?我的意思是我有一個some.dll.dll。我在我的C#項目中引用它,並且在參考列表中找到了一些COMLib.dll。但我的項目不包含任何一些COMLib.dll。它是包含Interop.someCOMLib.dll 所以我試圖註冊原someCOM.dll但我發現了錯誤部署依賴於雲的應用程序到天藍色的雲

Retrieving the COM class factory for component with CLSID {D1F73A20-01A1-431B-A135-2D2A89A3D2B3} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

而且,如果我做的一切權利是否有任何其他的事情,我可能錯過?

+0

據我所知,一些COM.dll是一個.NET程序集,Interop.someCOMLib.dll也是一個.NET程序集(當你用一些COMLib.dll的引用來構建你的項目時它會自動生成),所以COMCOMLib.dll可能是您嘗試使用的COM DLL。這是缺少的部分,你*必須*找到並註冊它。 –

+0

@SimonMourier我不擅長解釋事情,但我會發布是什麼問題。無論如何,你的建議_find_它真的很有幫助,謝謝 –

回答

0
  1. someCOM.dll依賴於其他庫,所以我將它們添加到我的項目文件夾與some.dll。這是最大的問題,因爲在沒有任何額外工作的情況下,我的機器都能正常工作。那是因爲它是第三方解決方案,所以我認爲他們的安裝人員完成了所有工作。
  2. 我將我的.cmd保存在記事本中,默認保存爲UTF-8。所以當我試圖執行這個cmd時,我在我的命令之間會出現一些奇怪的符號,所以它失敗了。

歸納起來有一些建議給別人誰面對這樣的問題,具有零級COM等學科知識的:在你的。加利福尼亞

  1. 刪除/ s標誌,並從你的命令執行它與管理員權限一致。不要忘記在部署時返回/ s標誌。
  2. 部署完成後,您會在錯誤頁面上看到問題.dll guid。只需訪問您的主機地址(與<customErrors mode="Off">Web.config
  3. 打開regedit並找到問題.dll的指導。可能會有一些有用的信息。
相關問題