2つの.idlファイルまたは2つの.tlbファイルを1つのファイルにマージする
-
27-09-2019 - |
質問
Regasmを使用してcomに公開する2つの.net dllがあります。 COMクライアント内での参照を簡素化するために、これらを1つのファイルにしたいと思います。
両方のファイルをIDLに変換し、1つのライブラリセクションのコンテンツを他方にコピーしてから、MIDLで.TLBにコンパイルしようとしました。これは2番目のIDL内のtypedefsで正常に動作しますが、コピーしたインターフェイスに関しては失敗するようです。OLE/COMビューアーはインターフェイス定義を見ることができますが、COM経由でTLBを使用して使用すると、TLBを使用すると、インターフェイスが見つかりません。コピーしました。
これに時間をかけすぎる前に、この方法でIDLをわずかにわずかにすることが可能であることを確認したかったのです。
解決 3
わかりましたので、私が経験していた問題は、IDLのマージと関連していなかったことがわかりました。
IDLに合流したい場合は、ライブラリセクションのコンテンツを1つのIDLにコピーするだけで、別のIDLにコピーするだけです。次に、マージされたファイルでMIDLを実行してTLBに変換します。
他のヒント
使用できますか ilmerge 最初に.NETアセンブリを組み合わせてから、結果のアセンブリでRegasmを使用しますか?
Ilmergeは、複数の.NETアセンブリを単一の.NETアセンブリに統合するためのユーティリティです。実行可能ファイルやDLLの両方で機能し、出力の処理と形式を制御するためのいくつかのオプションが付属しています。
これが失敗する明らかな方法はわかりません。ライブラリセクションを統合したと言いましたが、他の.idlからのインターフェイス宣言をコピーしたとは言いませんでした。それは明らかですが、ありそうもない説明です。
1つの障害モードは、クライアントアプリがタイプライブラリを使用して、アパートの境界またはプロセスの境界を越えてインターフェイスポインターをマーシャルするときです。ただし、HKCR インターフェイスのレジストリキーが必要です。 .NETはそれらを作成しません、あなたはそれを自分でやらなければなりません。あなたがしたかどうかを知っているでしょう、多くの説明もありません。