使用特定的dll版本调用COleDispatchDriver :: CreateDispatch

时间:2011-12-20 07:44:33

标签: com ole

我在MFC6中有一些项目和一个用DotNet 4编写的项目.MFC项目和.Net项目之间的通信是通过COM和COM服务器在.Net端。 COM服务器通过RagAsm.exe注册。在MFC中,我创建此COM服务器的实例,如下所示:

CreateDispatch( _T("PROGID.namespace") )

问题是,COM服务器由不同的项目使用。因此,如果我想因代码更改而增加我的com服务器dll的版本号,我必须再次使用RegAsm注册它。现在我的注册表中有两个版本的这个DLL。但是当我调用CreateDispatch方法时,程序每次都会尝试加载最新的方法。这意味着,包含旧版本的项目将无法找到正确的dll。在调用CreateDispatch()时,似乎无法指定版本。

还有另一种解决这个问题的可能性吗?

1 个答案:

答案 0 :(得分:0)

ProgID将解析为CLSID,然后最终解析为COM服务器二进制文件。如果您希望系统中有两个不同的COM服务器,为什么不使用“依赖于版本”(而不是您在上面的代码片段中使用的版本独立)ProgID的不同版本