如何自动化在VB6 exe项目中添加DLL引用?

4
我有一个VB6 exe项目,调用一个VB6 DLL。它们都是由我编写的。每次我对VB6 DLL做一些更改并编译后,我必须打开exe项目,重新选择已编译的DLL,然后才能运行/编译exe。如何自动化上述过程?我尝试编辑vbp文件,将相应的DLL行替换为已编译DLL的GUID,但没有成功(可能我得到了错误的GUID)。实际上,我在exe项目中有超过10个DLL,并且一些DLL甚至引用另一个DLL......因此,是否有任何脚本或方法可以自动化这个过程?谢谢。

5
如果您使用二进制兼容性重新编译DLL(到注册DLL的路径),它将无缝运行。请参见https://www.techrepublic.com/article/demystifying-version-compatibility-settings-in-visual-basic/。 - Alex K.
4
如果你创建一个项目组并添加DLL项目和EXE项目(或其他VBPs项目),你可以将DLL项目添加到EXE项目中,并将它们作为一个整体一起调试。 - Alex K.
嗨,Alex,我知道使用“二进制兼容性”编译DLL可以避免每次重新编译EXE的需要。但我不喜欢这样做,因为如果我在现有类方法中更改了某些内容(例如添加了一个新的非可选参数),但忘记在exe中更改相应的函数调用代码,那么这是相当危险的。它不会在启动运行程序时提示任何错误消息,直到运行到该代码行。无论如何,这篇文章确实帮助我更好地理解COM操作的细节。谢谢。 - mc lee
1个回答

0

使用项目兼容性而不是二进制兼容性。如果没有其他人使用您的DLL,则不一定需要二进制兼容性。

来自MSDN

何时应使用版本兼容性?

...

项目兼容性:每次编译组件时,类型库标识符都会保留,以便您的测试项目可以维护对组件项目的引用。所有上一个版本的类ID都将被保留;仅对与其早期版本不再二进制兼容的类更改接口ID。

(不确定原始MSDN页面是什么,但我在这里找到了它的副本。)

如果您想要检查编译后的 DLL,以查看文章所提到的所有这些 ID,可以运行 OLEView 并绑定到 DLL 的类型库。它将“反编译” DLL 的类型库,您可以在其中查看这些详细信息。如果您重新编译它,然后对比类型库文本,您将看到它如何发生变化。


感谢您的评论。我确实同意您的观点,即“二进制兼容性”并非必需。但是,您知道如何自动化.vbp中的DLL引用吗?而不是手动逐个选择DLL文件? - mc lee
为什么引用会改变?它们应该保留在保存的 VBP 中。 - StayOnTarget
如果您使用项目或二进制组件,则这些GUID不应更改。您尝试过吗? - StayOnTarget
你尝试过“项目兼容性”吗?正如上面所述,这与“二进制兼容性”不同。 - StayOnTarget
我先进行更多的测试。感谢您的帮助。 - mc lee
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接