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

Deploy com dependent app to azure cloud

我正在尝试部署引用 COM DLL 的 c# 应用程序。我知道 Azure Cloud VMS 是 x64,所以我引用的 COM 库也是 x64。 我添加了 .cmd 文件并将其链接到 ServiceDefinition 中。看起来它已被执行,因为如果我删除 .cmd 文件,我会收到丢失它的错误。 我不确定一件事:我应该注册哪个图书馆?我的意思是我有一个 someCOM.dll。我在我的 c# 项目中引用它,并且在我的引用列表中得到 someCOMLib.dll。但是我的项目不包含任何 someCOMLib.dll。它包含互操作性。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. someCOM.dll 依赖于其他库,因此我使用 someCOM.dll 将它们添加到我的项目文件夹中。这是最大的问题,因为在我的机器上一切正常,无需任何额外工作。那是因为它是第 3 方解决方案,所以我认为他们的安装程序完成了所有工作。
  2. 我将 .cmd 保存在记事本中,默认情况下它以 UTF-8 格式保存。因此,当我尝试执行此 cmd 时,我在命令之间的某处出现了一些奇怪的符号,因此失败了。

总而言之,对于面临此问题且 COM 等主题知识为零的人有一些建议:

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