代码之家  ›  专栏  ›  技术社区  ›  Toad

在同一台机器上同时使用同一控件(dll)的两个不同版本?

  •  1
  • Toad  · 技术社区  · 15 年前

    我在我的项目中使用了第三方组件,我最近升级到了他们的最新版本,修复了bug“A”

    不幸的是,虽然它解决了bug“A”,但另一部分变得完全不稳定,所以它引入了bug“B”。

    由于“A”和“B”处于完全不同的上下文中,我希望安装两个版本的控件,并在一个bug“B”不相关的情况下使用一个版本,在bug“A”不相关的情况下使用另一个版本。

    当然,在第三方开发人员发布了正确的修复程序之前,一切都是正常的

    有人想过怎么做吗?

    R

    p、 dll需要在regsvr32中注册。。。我怀疑这就是它能被发现的地方。。。我希望通过一些诡计,在这里我们可以用另一个名字注册这个东西

    3 回复  |  直到 15 年前
        1
  •  4
  •   Dirk Vollmar    15 年前

    您可以部署不同版本的COM组件并在不注册的情况下使用它们。Windows XP引入了免注册COM的此功能,要求您部署具有适当设置的.manifest文件。

    看看 Registration-Free Activation of COM Components Escape DLL Hell: Simplify App Deployment with ClickOnce and Registration-Free COM

        2
  •  0
  •   Gerrie Schenck    15 年前

    您只能在计算机上注册一个相同类型的COM dll。。。这就是.Net引入GAC的原因

        3
  •  0
  •   Charles Bretana    15 年前

    如果第三方组件是COM组件,那么您的思路是正确的,您需要使用不同的名称/GUID注册它两次。

    编辑:请参阅divo关于多COM注册的回答。。。在XP之后,您现在可以执行此操作。。。
    但在此之前,唯一的方法是手动修改类型库,并用新的guid替换现有的guid(除了拥有源代码和自己用不同的注册guid重新编译一个新的dll之外)。这将是极其困难的。(可能有一个工具可以这样做,但如果有,我不知道)顺便说一句,类型库可能嵌入到dll本身,或者它可能位于单独的*.tlb文件中(VB6组件通用)

    如果组件是托管代码组件,那么注册表可能只在集成到visual studio中时才需要,只需将dll复制到应用程序文件夹中,就足以让您在其中使用它的可执行文件。。。