重置vb6中的项目兼容性

时间:2011-11-17 23:12:15

标签: com vb6 activex dll

当我们破坏vb6 dll中的兼容性时,我必须执行以下操作:

  1. 设置为无二进制兼容性
  2. 重新编译
  3. 再次设置兼容性
  4. 从使用它的所有项目中删除对已更改的dll的引用
  5. 将引用添加回使用它的所有项目
  6. 重新编译所有这些项目
  7. 对使用这些项目的任何项目执行相同操作等。
  8. 当然这有点简化但是之前完成它的人应该知道我在说什么。

    我的问题是:您是否找到了更好的方法,或者您是否找到了任何(不太昂贵的)工具来促进这一过程?或者更好的是,你创建了一个可以与我分享的东西:)

    请注意,我问的是如何让这个过程更容易,而不是如何避免它。因此,请不要给出关于破坏兼容性有多糟糕的答案,并且我们不应该这样做。我生活在现实世界里,那里有我无法控制的东西,我只是想处理我所拥有的东西。

5 个答案:

答案 0 :(得分:8)

在我以前的工作中,我们有一个巨大的VB6应用程序,其中包含我们在项目组中的项目中引用的数十个VB6 DLL。我们经常打破兼容性,并且手动更新您描述的引用不是一种选择。

我们最初开发了一个工具,可以在破解和重新编译后更新文件夹中所有.vbp文件中的引用,但我最终找到了Kinook Software(www.kinook.com)的Visual Build,它可以自动处理。

我成功地使用了他们的解决方案多年。他们的“Make VB6”动作(http://www.kinook.com/VisBuildPro/Manual/makevb6.htm)有什么好处,它可以构建依赖树并按正确的顺序重建项目组中的所有项目,同时更新参考文献。

对于您的方案,您需要将“在构建之前设置版本兼容性”选项设置为“无兼容性”,然后选中“设置二进制兼容性”复选框,以便在构建之后将项目还原为二进制兼容性。 / p>

如果您有需要维护二进制兼容性的项目,只需将它们保留在.vbg之外,它就不会重建它。

答案 1 :(得分:3)

Additional Visual Basic 5.0 & 6.0 Samples提供了一个非常有用的二进制兼容性加载项。 “安装”后查看ReadMe.txtRevised Binary Compatibility.doc文件(运行下载后需要执行的步骤)。

  

此下载包含文档“Revised Binary Compatibility”以及Add-in SyncCompt.dll。在Visual Basic 5.0和Visual Basic 6.0中实现的二进制兼容性可确保新版本的发布产品与旧版本完全兼容。该文档解释了有关二进制兼容性和GUID修订的问题,并介绍了DLL。 DLL加载项构建一个新的兼容性文件来稳定您的产品(标准EXE除外,它没有二进制兼容性)。此工具仅适用于MicrosoftWindowsNT®环境。

这可能会也可能不会解决您的问题。

答案 2 :(得分:1)

您不需要更改兼容性设置。但是,您确实需要确保在兼容性设置中引用的dll(或exe)而不是您要编译的位置。

我们做类似的事情,所以我们有以下结构:

C:\ProductName\Bin - 包含所有实时程序集

C:\ProductName\Bin\Compatibility - 包含上一次构建中的所有程序集

在我们进行构建(我们通过炮制VB6.exe自动执行)后,我们将\Bin中的所有内容移至\Bin\Compatibility

答案 3 :(得分:0)

我发现MSDN上的Version Compatibility in ActiveX Components系列在兼容性和何时/如何打破它方面具有很高的启发性。我发布此信息主要是为了将来参考。

答案 4 :(得分:0)

我通过不存储兼容性信息来解决问题。

我从.vbp文件中删除了CompatibleEXE32 = {dllname}行

我从不在构建之后保存.vbp文件,因此引用不会再次出现。