.NET 6.0 comhost 注册失败,错误为 0x80008083

问题描述 投票:0回答:1

我正在将托管 32 位 COM 组件从 .NET Framework 4.8 迁移到 .NET 6。Regsvr32 将在开发计算机上注册其 xxx.comhost.dll,但不会在非开发计算机上注册:它失败并显示错误消息“模块‘xxx.comhost.dll’已加载,但对 DllRegisterServer 的调用失败,错误代码为 0x80008083。”

错误描述为“CoreHostLibMissingFailure 0x80008083 -2147450749 131 缺少依赖库之一。通常当 hostfxr、hostpolicy 或 coreclr 动态库不存在于预期位置时。可能意味着安装已损坏或不完整”

开发计算机上安装的 .NET 6.X 运行时实际上已安装在目标 VM 上。组件的运行时配置如下

{
  "runtimeOptions": {
    "tfm": "net6.0",
    "rollForward": "LatestMinor",
    "frameworks": [
      {
        "name": "Microsoft.NETCore.App",
        "version": "6.0.0"
      },
      {
        "name": "Microsoft.WindowsDesktop.App",
        "version": "6.0.0"
      }
    ],
    "configProperties": {
      "System.Reflection.Metadata.MetadataUpdater.IsSupported": false
    }
  }
}

关于可能缺少哪个依赖项或配置错误有什么建议吗?

c# .net-6.0 com-interop
1个回答
0
投票

缺少的依赖项是 Microsoft Windows 桌面运行时 - 6.X.XX (x86)。

不知何故,正确的 (x86) .NET 6.0 运行时在某个时刻找到了进入开发计算机的方式,即使它没有在控制面板的“添加/删除程序”中明确列出。目标计算机与开发计算机一样,显式安装了 .NET 6.0 运行时 (x64),但此安装程序没有带来所需的 32 位二进制文件..

© www.soinside.com 2019 - 2024. All rights reserved.