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

时间:2009-10-16 13:41:17

标签: .net dll activex versions

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

不幸的是,虽然它解决了'A'错误,但另一部分已经完全不稳定,所以它引入了一个错误'B'。

由于'A'和'B'处于完全不同的上下文中,我希望安装两个版本的控件并使用一个案例,其中bug'B'不相关,另一个案例在案例中错误'A'与此无关。

当然,在第三方开发者发布适当的修复之前,所有内容都是

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

[R

P.S。这个dll需要在regsvr32中注册...我怀疑这是让它自己可以找到的地方......我希望有一些技巧,我们可以在这里用不同的名字注册这个东西

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

如果,otoh,该组件是托管代码组件,那么注册表可能只是集成到visual studio中所必需的,只需将dll复制到您正在使用它的可执行文件的应用程序文件夹中即可。 ......