2017-05-31 50 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的指导。可能会有一些有用的信息。
相关问题