2011-12-20 114 views
0

我在MFC6一些项目和一个项目,该项目是写在DOTNET的4. MFC项目和.NET项目之间的通信是通过COM和COM服务器上的.Net侧。 COM服务器通过RagAsm.exe进行注册。在MFC中,我创建这样的COM服务器的实例是这样的:呼叫的COleDispatchDriver ::特定DLL版本CreateDispatch

CreateDispatch(_T("PROGID.namespace")) 

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

解决此问题还有其他可行性吗?

回答

0

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