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

发布于 2024-08-08 20:23:53 字数 344 浏览 5 评论 0原文

我在我的项目中使用第三方组件,并且最近升级到了他们的最新版本,

不幸的是,该版本修复了错误“A”,虽然它解决了错误“A”,但另一部分已经完全不稳定,因此它引入了错误“B”。

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

当然,在第 3 方开发商发布适当的修复程序之前,一切都会

有任何人想过如何做到这一点吗?

R

附注该dll需要用regsvr32注册...我怀疑这就是它可以找到自己的地方...我希望通过一些技巧,我们可以在这里用不同的名称注册该东西

I'm using a3rd party component in my project and I recently upgraded to their latest version which fixed bug 'A'

unfortunately, while it solved bug 'A', another part has gotten completely unstable, so it introduced a bug 'B'.

Since 'A' and 'B' are in completely different contexts, I want to have both versions of the control installed and use the one in one case where bug 'B' is not relevant, and the other one in the case that bug 'A' is not relevant.

of course, everything until a proper fix has been issued by the 3rd party developer

Anyone any thought how this can be done?

R

p.s. the dll needs to be registered with regsvr32... I suspect this is the point where it makes itself findable... I'm hoping with some trickery it is here we can register the thing double under a different name

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

橘寄 2024-08-15 20:23:53

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

查看免注册激活 COM 组件 逃离 DLL Hell:
使用 ClickOnce 和免注册 COM 简化应用程序部署

You can deploy different version of a COM component and use them without registration. This feature of registration-free COM has been introduced with Windows XP and requires you to deploy a .manifest file with the appropriate settings.

Have a look at Registration-Free Activation of COM Components and Escape DLL Hell:
Simplify App Deployment with ClickOnce and Registration-Free COM
.

木有鱼丸 2024-08-15 20:23:53

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

You can only register one COM dll of the same type on your machine... this is why the GAC is introduced by .Net

爱要勇敢去追 2024-08-15 20:23:53

如果第三方组件是 COM 组件,那么您就在正确的轨道上,您需要使用不同的名称/Guid 注册它两次。

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

如果该组件是托管代码组件,则注册表可能只需要集成到 Visual Studio 中,并且只需将 dll 复制到您正在使用的可执行文件的应用程序文件夹中就足够了在...

If the third party component is a COM component, then you're on the right track, you need to register it twice using different names/Guids.

EDIT: see divo answer about multiple COM registration... After XP you can do this now...
But before that the only way to do this (short of having the source code and recompiling a new dll yourself with different registration guids), was to manually modify the type library, and replace the existing guids with new ones. This would be extremely difficult. (There may exist a tool to do this, but if there is I don;t know of it) The type library, by the way may be embedded in the dll itself, or it may be in a separate *.tlb file (common for VB6 components)

If, otoh, the component is a managed code component, then the registry may only be necessary for integration into visual studio, and it will be sufficient to just copy the dll into the application folder for the executable you are using it in...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文