2011-12-20 18 views
0

MFC6にはいくつかのプロジェクトがあり、DotNet4には1つのプロジェクトがあります.MFCプロジェクトと.NETプロジェクト間の通信はCOM経由であり、COMサーバーは.Net側。 COMサーバーはRagAsm.exeを介して登録されています。 MFCで私はこのような、このCOMサーバーのインスタンスを作成します。特定のdllバージョンのCOleDispatchDriver :: CreateDispatchを呼び出す

CreateDispatch(_T("PROGID.namespace")) 

問題は、COMサーバーが異なるプロジェクトで使用されていること、です。ですから、コード変更のために私のcomサーバdllのバージョン番号を増やしたいのであれば、RegAsmに再度登録しなければなりませんでした。今、私のレジストリにこのdllの2つのバージョンがあります。しかし、CreateDispatchメソッドを呼び出すと、プログラムは毎回最新のものを読み込もうとします。つまり、古いバージョンを含むプロジェクトは、正しいdllを見つけることができなくなります。 CreateDispatch()を呼び出すときにバージョンを指定することはできないようです。

この問題を解決する別の可能性はありますか?

答えて

0

ProgIDCLSIDに解決され、最終的にCOMサーバーバイナリに解決されます。システムに2つの異なるCOMサーバーが存在するようにしたいのであれば、 "バージョン依存"を使用しないでください(上記のコードで使用したバージョンに依存しません)。ProgIDはバージョンが異なります。 VersionIndependentProgID

  • COM registration of PROGIDs
  • 関連する問題