首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我能否防止VB6 OCX控件在编译时生成OCA注册表项?

我能否防止VB6 OCX控件在编译时生成OCA注册表项?
EN

Stack Overflow用户
提问于 2014-11-26 10:01:41
回答 1查看 847关注 0票数 3

我们这里有一个用VB6写的项目(是的,我知道.)它消耗了一些ActiveX对象,这些对象也是用VB6 (OCX文件)编写的。

最近,我们开始为这个项目使用一个构建服务器,并且在MSBuild扩展包的帮助下,我们设计了一个构建过程,它以正确的顺序编译库、控件和可执行文件,并根据适当的顺序注册它们,然后注销所有内容,以便为下一次运行留下干净的机器。

问题是,每次编译运行都会在注册表中留下VB6编译器似乎需要的扩展类型库/对象缓存文件的条目,并且在未注册控件时不会删除这些条目。

也就是说,对于每个具有指向OCX的CLSID条目的注册组件,在我们使用VB6编译项目之后,存在一个新生成的用于OCA的CLSID。

因为每次构建后我们取消注册OCX控件,每次都重新生成OCA,因此OCA条目的数量继续增加。

有谁知道是什么原因造成了这些条目,我们是否可以通过某种注销过程删除它们,或者我们是否能够首先防止它们被创建?

几个注意事项:

  • 生成机器是Windows 7
  • 启用了二进制兼容性,因此OCX控件的CLSID不会更改。
  • Reg-Free COM目前不是一个选项
  • 我们不能简单地注册控件并保留它们,因为我们希望运行这个项目的多个构建。
EN

回答 1

Stack Overflow用户

发布于 2014-11-27 11:30:47

关键是停止尝试将DLL(包括OCX)视为静态链接库。您的构建过程不合适。

虽然VB6支持粗糙的“项目组”功能,但这只适用于小规模的、非结构化的开发工作,比如那些未被雷达探测到的业务单位编码者所使用的开发工作。

相反,要努力在EXE项目中保持以应用程序为中心的逻辑。将长期可重用逻辑分解到DLL和OCX项目中,将它们视为独立的、独特的内部产品。将这些(包括源代码管理)与使用的应用程序分开维护。

通常,这些代码应该比应用程序代码更稳定,在应用程序代码中,更改更频繁地由它们所包含的业务逻辑驱动。

即使其中一些必须包含业务逻辑,您仍然希望将它们作为单独的软件实体来处理。尝试将它们与具有更多稳定性的库区别开来。

这需要更多的纪律,而不是单一的“贝伯塔”的发展,但有许多回报。首先,构建时间更快。而且,作为一种奖励,几乎所有这些与源代码管理相关的问题对于应用程序来说都消失了,因为这些应用程序的修补和篡改率要高得多。

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27146169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档