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

Com 使用特定的dll版本调用COleDispatchDriver::CreateDispatch,com,ole,Com,Ole,我有一些项目在MFC6和一个项目是在DOTNET4写的。MFC项目和.Net项目之间的通信是通过COM进行的,COM服务器位于.Net端。COM服务器通过RagAsm.exe注册。在MFC中,我创建了此COM服务器的一个实例,如下所示: CreateDispatch( _T("PROGID.namespace") ) 问题是,COM服务器被不同的项目使用。因此,如果由于代码更改而想增加com服务器dll的版本号,我必须向RegAsm再次注册。现在我的注册表中有两个版本的dll。但是当我调用Cr

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

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


是否还有其他可能解决此问题?

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

  • vs