0

我有一个混乱的情况,包装了几个 3rd 方 COM 组件。实际上它是一个 COM 组件和几个 .NET 程序集。.NET 程序集又依赖于相同的第 3 方的内部 COM 组件。当我注册了 COM DLL 后,我的代码可以正常工作(现在我正在从 C# 进行测试)。当我不这样做时,它会失败。调试它的最佳方法是什么?

我通过添加对 COM 组件的引用、设置 Isolated=true、然后将生成的 comClass 元素从清单中提取到我自己的 SxS 清单中来生成 SxS 清单。此外,它似乎创建了一个 Interop.XXX.dll 文件:这是为了什么?

一些示例错误消息:

"Retrieving the COM class factory for component with CLSID {012A4BEB-99EC-4A65-A4AF-7D09A20B5034} failed due to the following error: 80040154."

"HSREADWRITELib::ReadWriteData, CreateInstance"
4

1 回答 1

2

这是您可以从无注册 COM 获得的最基本故障,它没有使用清单或清单不正确。验证您的清单是否有一个<file>命名 COM DLL 的元素并包含一个<comClass>具有“clsid”属性的元素,该属性与异常消息所抱怨的 guid 相同。

然后确保清单嵌入在客户端可执行文件中。您可以在 Visual Studio 中使用 File + Open + File 来查看它,打开 RT_MANIFEST 节点。

于 2011-07-04T17:52:19.863 回答