当我们破坏vb6 dll中的兼容性时,我必须执行以下操作:
当然这有点简化但是之前完成它的人应该知道我在说什么。
我的问题是:您是否找到了更好的方法,或者您是否找到了任何(不太昂贵的)工具来促进这一过程?或者更好的是,你创建了一个可以与我分享的东西:)
请注意,我问的是如何让这个过程更容易,而不是如何避免它。因此,请不要给出关于破坏兼容性有多糟糕的答案,并且我们不应该这样做。我生活在现实世界里,那里有我无法控制的东西,我只是想处理我所拥有的东西。
答案 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.txt
和Revised 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文件,因此引用不会再次出现。