我正在使用第 3 方 dll 开发我的应用程序,它是一个 COM 对象。我正在尝试使用免注册 COM 使我的应用程序隔离。但我真的找不到关于如何做这一切的好例子/演练/教程。请告诉我我所做的是对还是错。
我为原始 dll 创建了清单,使用 tlbimp.exe 生成了一个样式库,将类型库添加为对项目的引用,正常实例化对象。即使我已经提供了清单文件,我仍然收到此错误:
System.Runtime.InteropServices.COMException 未处理
消息=检索具有 CLSID {7B3A2D19-1D82-4DF6-8939-B730058A5535} 的组件的 COM 类工厂失败,原因是以下错误:80040154 未注册类(来自 HRESULT 的异常:0x80040154(REGDB_E_CLASSNOTREG) ))。
谷歌搜索了一下,似乎很多人都指向构建配置,但我已经将构建设置为使用 x86。我很确定 dll 也是在 x86 环境中开发的。(我不知道这是否相关..)
我做了:
- 提供外部清单而不删除 dll 中的内部 RT_MANIFEST。
- 使用 mt.exe 更新 RT_MANIFEST。
- 使用上述两者生成的类型库。
顺便说一句,我也很好奇我应该为清单中的版本元素使用哪个 FILEVERSION 或 PRODUCTVERSION 编号?(我都试过了,都没有用)
请告诉我我哪里做错了?我是否为清单提供了错误的信息?我如何知道清单需要更多信息?
如果您需要更多信息,请告诉我。谢谢大家。