2013-06-18 50 views
0

我们有一个使用ActiveX控件的旧VB6项目,其中一些是我们构建的,还有一些是我们从第三方供应商处获得的。在没有注册的情况下构建VB6项目

目前,我们使用一个.csproj的项目,该项目将执行以下操作,

  • 执行REGSVR32注册OCX控件
  • 执行VB6打造VB6项目
  • 执行REGSVR32注销OCX控件

这种注册/注销非常难看,对于本地开发人员在启用UAC的情况下构建起来有点痛苦。完全可以建立一个VB6项目而无需注册任何控件?

我很抱歉,如果这已经问过。我能找到的唯一类似问题是关于如何构建VB6项目,以及这些问题的答案提到了注册,构建,取消注册的相同解决方案。

+0

您可能比我做得更好,使用类似的过程,但使用.bat脚本。 – tcarvin

回答

2

这意味着原始开发者可能没有正确设置“二进制兼容性”。这意味着VB6的dll在每次构建时都会得到一个“新的comid”。 这意味着您的原始VB6开发人员可能是一堆黑客。

您可以在这里阅读关于二进制兼容性的部分。

http://support.microsoft.com/kb/161137

获取时间机器和回去冲在脸上谁说:“我们不需要 现在的工作了二进制兼容性问题的人,我们就注销并重新注册组件...易Peezey!“................

如果我错了,请让我知道。但每次我看到“取消注册com”和“重新注册com”......它都会回到那个聪明的决定。

这里是它一个较长的讨论:

http://www.techrepublic.com/article/demystifying-version-compatibility-settings-in-visual-basic/5030274

编辑:

如果OCX的是不改变........那么你应该只需要注册一次他们在建造机器上一次。

0

听起来像这些人只是在这些OCX的客户端上工作,而不是自己修改和重新编译OCX。

如果是这样,那么您应该像管理VB6开发系统一样管理这些库的安装。这意味着每个工作站都需要安装您正在使用的控制套件一次(嗯,并且在新版本投入使用时保留)。开发人员库的安装人员部署诸如.DEP文件以及设计时许可证密钥注册表项等内容,因此不应将regsvr32视为可行的策略。

如果您正确设置开发人员工作站并维护它们,则没有任何理由要注册和取消注册这些事情。

相关问题