2011-12-20 65 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的版本不同。