0

インターフェイスとクラスを ComVisible 経由で COM に公開するアセンブリがあります。このクラスは、VB6 アプリケーションによって使用されます。

現在、いくつかの再編成により、このクラスを別のアセンブリで提供する必要があります。Guid と ProgID を保持している限り、コードをこの新しいアセンブリに移動して登録し、再コンパイルせずに VB6 アプリケーションにクラスを見つけさせることはできますか?

4

2 に答える 2

2

GuidとProgIDを保持している限り

注意してください、複数形のガイドがあります。少なくとも、インターフェイスタイプ用に1つ、IID、およびインターフェイスを実装するクラス用に1つ、CLSIDがあります。イベントをサポートする場合、またはアセンブリに複数のインターフェイスまたはクラスがある場合は、追加のイベント。タイプライブラリ(Regasm.exe / tlbオプション)も登録すると、タイプライブラリTLBIDに使用されるアセンブリ自体のGUIDもあります。

これらのいずれかを間違えるか、.NETによる自動生成に依存すると、置換は機能しません。

置換が同一であることを確認する最良の方法は、タイプライブラリを逆コンパイルし、それらを比較して同一性を確認することです。Tlbexp.exeでまだタイプライブラリを持っていない場合は、VisualStudioコマンドプロンプトから最初にタイプライブラリを生成します。次に、Oleview.exe、File + View Typelibを実行して、IDLに逆コンパイルされたタイプライブラリのコンテンツを取得します。右側のペインのコンテンツをコピーしてテキストファイルに貼り付けます。交換用DLLについて繰り返し、比較します。コメントの違いは気にしないでください。

于 2013-02-11T20:43:39.653 に答える
1

はい、理由がわかりません...古いアセンブリが適切に登録解除されていることを確認してください。

于 2013-02-11T19:44:27.997 に答える