AxImp生成参考

时间:2010-10-05 20:37:49

标签: c# .net visual-studio-2008 activex

我最近一直在研究一个需要3个ActiveX控件的C#/ VS2008项目。我使用AxImp.exe为控件创建了一个.NET包装器,并将它们添加为我的项目的引用。几天后代码一直没有任何问题。

昨天,我从我们的版本控制服务器中提取了一个干净的版本(包含了包装DLL,但没有包含ActiveX控件本身),当我尝试运行该程序时,我得到COMResultException HRESULT = REGDB_E_CLASSNOTREG(0x80040154) 1}}在父表单的InitializeCompnent调用期间。

有关可能发生的事情的任何线索?

1 个答案:

答案 0 :(得分:2)

不确定“干净版本”是什么意思,但是interop库中的GUID显然不再与ActiveX控件使用的GUID相匹配。结果是获得0x80040154,它无法再找到ActiveX注册表项。

控制构建过程并使ActiveX控件与interop包装器保持同步非常重要,否则您将长期与此问题作斗争。生成它们应该与构建控件相关联。如果控件是在VB6中创建的,这可能尤其成问题。除非您设置其二进制兼容性功能,否则可以快速分配新的GUID。