我有 .NET 代码使用的 vb6 com 服务器(ActiveX DLL 项目)
每次我将更改放入 vb6 代码并创建 dll 时,我也必须重新编译我的 .NET 客户端代码,因为看起来 VB6 会生成新的 GUID 或接口和 com 对象的版本。
我承认这是一个很好的做法,因为已经进行了更改,但我想禁用此行为,以便每次更新 vb6 dll 时我的 .NET 客户端代码都相同。
我如何告诉 VB6 无论对 COM 对象或 COM 接口进行什么更改,都保持 ActiveX dll 的所有 GUID 和版本相同?
“项目 + 属性”、“组件”选项卡中的选择很重要。您必须在此处选择“二进制兼容性”以强制它重新使用旧的指南。并保留 DLL 的副本作为提供指南的“主”,将其签入源代码管理。
当您添加新类时,您还必须更新该副本,以便将来的版本知道为这些添加的类重用相同的指南。很容易忘记,但一旦忘记就很难诊断。
这是非常危险的,重用guid是一个非常强大的DLL Hell诱因。只要小心避免更改现有方法,就可以让旧的客户端程序继续使用新的 DLL。不仅仅是他们的方法签名,还有他们的实现。遇到旧版本 DLL 的更新客户端将失败very令人讨厌的是,访问冲突崩溃几乎无法诊断。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)