【问题标题】:Deploy com dependent app to azure cloud将依赖 com 的应用部署到 Azure 云
【发布时间】:2017-10-31 19:31:16
【问题描述】:

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

如果我做的一切都是正确的,我可能会错过任何其他事情吗?

【问题讨论】:

  • 据我了解,someCOM.dll 是一个.NET 程序集,Interop.someCOMLib.dll 也是一个.NET 程序集(它是在您构建项目时引用 someCOMLib.dll 时自动生成的),因此 comCOMLib.dll 可能是您尝试使用的 COM dll。这是缺少的部分,您必须找到它并注册它。
  • @SimonMourier 我不擅长解释事情,但我会发布问题所在。无论如何,您对 find 的建议真的很有帮助,谢谢

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


【解决方案1】:
  1. someCOM.dll 依赖于其他库,因此我使用 someCOM.dll 将它们添加到我的项目文件夹中。这是最大的问题,因为在我的机器上一切正常,没有任何额外的工作。那是因为它是第 3 方解决方案,所以我认为他们的安装程序完成了所有工作。
  2. 我将 .cmd 保存在记事本中,默认情况下保存为 UTF-8。因此,当我尝试执行此 cmd 时,我的命令之间出现了一些奇怪的符号,所以它失败了。

综上所述,对面临此问题且COM等学科知识为零的人有一些建议:

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

【讨论】:

    猜你喜欢
    • 2015-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 2020-03-16
    • 1970-01-01
    相关资源
    最近更新 更多