我如何告诉vb6不要在每次创建dll时创建新版本的interfaces/com对象?

2023-12-26

我有 .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(使用前将#替换为@)

我如何告诉vb6不要在每次创建dll时创建新版本的interfaces/com对象? 的相关文章

随机推荐

  • 如何使用 Apache MINA 库编写 SFTP 客户端

    我尝试使用 Apache MINA 库查找 SFTP 客户端的 Java 代码 但找不到 有人可以告诉我如何使用 Apache MINA 库编写一个基于密码身份验证的简单 SFTP 客户端 https mina apache org ssh
  • C++:使用成员函数指针获取函数虚拟“地址”

    这个问题类似于打印虚拟成员函数的地址 https stackoverflow com questions 3068144 print address of virtual member function 我想使用成员函数指针检索函数的内存位
  • Flutter 可以使用compute() 将对象作为消息“发送”吗?

    所以我基本上有一个简单的课程update 方法 但正因为如此update 方法做了一些数学计算 我想用compute 让它在另一个中运行Isolate 计划是运行update 方法中的Isolate并返回更新后的对象 如下所示 comput
  • 具有多个键映射到相同值的字典

    我需要获取一个整数值并索引到相应字符串的表中 在这种情况下 连续的整数范围应全部映射到同一字符串 类似的东西 以非工作字典为例 int dict 0 String1 1 String2 2 String3 range 3 15 String
  • Android蓝牙实现基础知识

    谁能用简单的语言向我解释一下 android 蓝牙示例中 UUID 的需要 我读过一些关于它的文章 但仍然不清楚 UUID 的确切需求 现在让我向您解释一下我想要开发的场景 我想开发一个 Android 应用程序来传输数据 例如 带有 xy
  • 库未加载错误——错误的 ruby

    我正在将 RVM 与 Ruby 1 9 3 p448 一起使用 但是当我尝试运行我的 Rails 服务器时 我收到此错误 以及其他一些内容 9 Library not loaded Users sashafklein rvm rubies
  • 使用 Zookeeper 而不仅仅是数据库来管理分布式系统的目的是什么?

    我正在学习Zookeeper 到目前为止我不明白将其用于数据库无法解决的分布式系统的目的 我读过的用例是通过让 Zookeeper 客户端读 写 Zookeeper 服务器来为分布式系统实现锁 屏障等 不能通过读 写数据库来实现同样的目的
  • 将输入字段焦点设置为开始输入

    我正在寻找一种方法 能够在不选择任何内容的情况下开始在网站上打字 然后聚焦特定的输入字段 谷歌也采用了这个功能 在他们的搜索结果中 您可以单击任意位置 使搜索字段失去焦点 当您开始输入时 它会自动再次聚焦在搜索字段上 我正在考虑将 jQue
  • 运行到Eclipse中的下一个断点(java)

    Eclipse中如何运行到下一个断点 我停在一个断点处 之后我需要运行一段很长的代码 直到遇到下一个断点 我搜索了SO和Eclipse但没有找到答案 只是对 Eclipse 调试器做了噩梦 仍然无法忘记我心爱的 Sun Workshop 我
  • 使用 Knockout 填充 Bootstrap 行和跨度

    本质上我正在尝试通过 Knockout 和 JSON 对象填充 Bootstrap 模板 引导脚手架 div class row fluid div class span4 h1 App Title h1 p App Description
  • IntelliJ、Android 和 Gradle

    我正在尝试让我现有的 Android 项目与 gradle 和 IntelliJ 12 一起使用 以前我让它与 Maven 一起工作 但它似乎不像 gradle 那么灵活 而且我认为我知道的是我需要更少的子文件夹 我的Android项目分为
  • 从 C++ 程序在 Linux 中运行另一个程序

    好的 我的问题是这样的 假设我有一个简单的 C 代码 include
  • 解包到 OracleConnection

    我有这段代码 曾经使用 JBoss 5 1 Oracle 11 ojdbc6 jar 正常运行 我根据需要获取了 OracleConnection InitialContext ic new InitialContext DataSourc
  • 将文本附加到 TextView 数据类型

    我是一名初学者 android java 程序员 我的背景主要是 C 和 C 在 C 中 如果我有一个名为 myWord 的字符串变量 并且它的值为 Hello 我可以使用 运算符附加附加信息 我在java中尝试了几次这个方法 显然我不能使
  • Vuejs - 未捕获类型错误:无法重新定义属性:$router

    我对 Vuejs 比较陌生 并且已经被以下错误困扰了一段时间 页面加载时出现 未捕获的类型错误 无法重新定义属性 router在 Function defineProperty 在 Function install VM2179 vue r
  • 重用单元格效果不佳 - TableView

    我的手机按钮有问题 在我的 tableView 中 每一行由以下部分组成 一张图像 一些标签和一个按钮 该按钮有一个复选标记图像 单击时 按钮的图像会发生变化 问题是另一个按钮的图像也会无缘无故地改变 发生这个错误是因为我的电池被重复使用
  • Scala——如何在非函数类型上使用函子?

    在阅读此博客上的 Functor 描述时 https hseeberger wordpress com 2010 11 25 introduction to category theory in scala https hseeberger
  • 页面加载时的 JavaScript 检查是否存在具有特定类的跨度(在 下),如果不存在,则删除整个

    我正在尝试为我最喜欢的目录列表网站创建自己的greasemonkey 脚本 问题并不是它列出的所有内容都对我有益 我检查了网站代码 看起来每个条目都在 现在 看起来 我只对具有以下格式的内容感兴趣 tr class project desc
  • 中位数排序的真实名称是什么和/或我在哪里可以找到更多相关材料

    我正在看书简而言之 算法由 O Reilly Media 出版 我正在阅读有关排序算法的部分 发现了一种称为中值排序的算法 因为我以前从未听说过它 而且我的 CS3 教科书 涵盖算法 也没有列出它 所以我用 google 搜索了它 并尝试在
  • 我如何告诉vb6不要在每次创建dll时创建新版本的interfaces/com对象?

    我有 NET 代码使用的 vb6 com 服务器 ActiveX DLL 项目 每次我将更改放入 vb6 代码并创建 dll 时 我也必须重新编译我的 NET 客户端代码 因为看起来 VB6 会生成新的 GUID 或接口和 com 对象的版