0

いくつかのサードパーティのCOMコンポーネントをラップするという厄介な状況があります。実際には、1つのCOMコンポーネントと複数の.NETアセンブリです。.NETアセンブリは、同じサードパーティの内部COMコンポーネントに依存します。COM DLLを登録すると、コードは正常に機能します(現在、C#からテストしています)。そうしないと失敗します。それをデバッグするための最良の方法は何ですか?

COMコンポーネントへの参照を追加し、Isolated = trueを設定して、結果のcomClass要素をマニフェストから自分のSxSマニフェストに抽出することにより、SxSマニフェストを生成しました。また、Interop.XXX.dllファイルを作成しているようです:それは何のためですか?

エラーメッセージの例:

"Retrieving the COM class factory for component with CLSID {012A4BEB-99EC-4A65-A4AF-7D09A20B5034} failed due to the following error: 80040154."

"HSREADWRITELib::ReadWriteData, CreateInstance"
4

1 に答える 1

2

これは、reg-free COMから発生する可能性のある最も基本的な障害であり、マニフェストを使用していないか、マニフェストが正しくありません。マニフェストにCOMDLL<file>という名前の要素があり<comClass>、例外メッセージが文句を言っているものと同じGUIDを持つ「clsid」属性を持つ要素が含まれていることを確認します。

次に、マニフェストがクライアント実行可能ファイルに埋め込まれていることを確認します。VisualStudioで[ファイル]+[開く]+[ファイル]で表示し、RT_MANIFESTノードを開きます。

于 2011-07-04T17:52:19.863 に答える