1

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

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

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

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

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

R

ps dll需要用regsvr32注册...我怀疑这是它使自己被发现的地方...我希望有一些诡计在这里我们可以用不同的名字注册这个东西双重

4

3 回答 3

4

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

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

于 2009-10-16T13:47:36.667 回答
0

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

于 2009-10-16T13:45:05.843 回答
0

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

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

如果,otoh,该组件是一个托管代码组件,那么注册表可能只需要集成到 Visual Studio 中,只需将 dll 复制到应用程序文件夹中就可以了,您正在使用它的可执行文件...

于 2009-10-16T13:55:21.487 回答