将com依赖的应用程序部署到azure云

时间:2017-05-31 06:27:39

标签: c# azure dll com azure-cloud-services

我正在尝试部署在COM DLL中引用的c#app。我知道Azure Cloud VMS是x64,所以我引用的COM lib也是x64。 我添加了.cmd文件并将其链接到ServiceDefinition中。并且看起来它已被执行,因为如果我正在删除.cmd文件,我会收到错过它的错误。 我不确定一件事:我应该注册哪个库?我的意思是我有一个someCOM.dll。我在我的c#项目中引用它,我在我的引用列表中得到了一些COMLib.dll。但我的项目不包含任何someCOMLib.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)).

如果我做的一切正常,还有其他事情我可能会错过吗?

1 个答案:

答案 0 :(得分:0)

  1. someCOM.dll依赖于其他库,所以我将它们添加到带有someCOM.dll的projects文件夹中。这是最大的问题,因为我的机器上的所有工作都没有任何额外的工作。那是因为它是第三方解决方案,所以我认为他们的安装程序完成了所有工作。
  2. 我将.cmd保存在记事本中,默认情况下保存为UTF-8。因此,当我尝试执行此cmd时,我在命令之间的某处出现了一些奇怪的符号,因此失败了。
  3. 总结一下,对于遇到这个问题并且没有COM等级的人有一些建议。主题知识:

    1. 删除.cmd中的/ s标志,并使用管理员权限从命令行执行。不要忘记在部署时返回/ s标志。
    2. 部署后,您将在错误页面上看到问题.dll guid。只需访问您的主机地址(atomic_flag
    3. 中的<customErrors mode="Off">即可
    4. 打开Web.config并找到问题.dll的指南。可能会有一些有用的信息。