Windows 7 我是否可以防止VB6 OCX控件在编译时生成OCA注册表项?
我们这里有一个用VB6编写的项目(是的,我知道…),它使用一些同样用VB6(OCX文件)编写的ActiveX对象 最近,我们开始为这个项目使用一个构建服务器,在的帮助下,我们设计了一个构建过程,该过程按照正确的顺序编译库、控件和可执行文件,适当地注册它们,然后注销所有内容,以便为下一次运行留下一台干净的机器 问题在于每次编译运行都会在注册表中为VB6编译器似乎需要的扩展类型库/对象缓存文件保留条目,并且在注销控件时不会删除这些条目 i、 e.对于具有指向OCX的CLSID条目的每个注册组件,在我们使用VB6编译项目后,存在一个新生成的OCA CLSID 因为我们在每次构建之后都会注销OCX控件,并且每次都会重新生成OCA CLSID,所以OCA条目的数量会继续增长 有人知道这些条目的原因吗?我们是否可以通过某种注销过程删除它们,或者我们是否可以首先阻止创建它们 请注意:Windows 7 我是否可以防止VB6 OCX控件在编译时生成OCA注册表项?,windows-7,com,vb6,activex,Windows 7,Com,Vb6,Activex,我们这里有一个用VB6编写的项目(是的,我知道…),它使用一些同样用VB6(OCX文件)编写的ActiveX对象 最近,我们开始为这个项目使用一个构建服务器,在的帮助下,我们设计了一个构建过程,该过程按照正确的顺序编译库、控件和可执行文件,适当地注册它们,然后注销所有内容,以便为下一次运行留下一台干净的机器 问题在于每次编译运行都会在注册表中为VB6编译器似乎需要的扩展类型库/对象缓存文件保留条目,并且在注销控件时不会删除这些条目 i、 e.对于具有指向OCX的CLSID条目的每个注册组件,在我
- 构建计算机是Windows7
- 二进制兼容性已启用,因此OCX控件的CLSID不会更改
- 注册免费COM当前不是一个选项
- 我们不能简单地注册控件并将其保留,因为我们希望运行此项目的多个构建
这比单一的“语言之塔”开发需要更多的纪律,但也有很多回报。一方面,构建时间更快。另外,对于修补和篡改率更高的应用程序,几乎所有这些与源代码管理相关的问题都消失了。由于我对msbuild扩展缺乏了解,我们在“正常”构建过程中必须做的事情(虽然不是从ide开始,但我们有批处理工作)我们必须为我们的控件和com dll提供二进制兼容性文件。我们从未注销过它们,而且我们有一个干净的注册表(好的,大多数时候…),这就是我们对构建服务器所做的。二进制兼容文件是源存储库的一部分,与其他所有文件一起关闭。不幸的是,如果您想移动位置(在我们的例子中,开发、UAT和发行版配置编译到不同的输出文件夹-根据在开发输出中注册的控件构建发行版确实是非常糟糕的),取消注册它们是必不可少的。这并不能解决当前的问题。如果我想改变信仰,我会去问programmers.stackexchange.com。有趣的是,我没有要求人们为我签约的团队的不良行为辩护。我在问是否有人知道是什么导致了我所描述的问题。你的否决票从根本上违背了stackoverflow的原则。@Bob77-告诉某人重写他们的项目并不能回答这个问题。他们很可能无权做出这样的决定。如果你不允许讨论如何组织项目,我看不到任何编程问题。因此,在这种情况下,整个问题就成了stackoverflow的话题。至于回答这个问题,这个网站是作为一个永久的参考,而不是一次性的个人问答。我看到了一个关于创建意外/不需要的注册表项的相当明确的问题。当然,这不是一个语言语法问题,但是我们有开发环境的标签和关于它们行为的问题,所以我不认为这不合适。