質問

私は、InteropアセンブリもあるサードパーティのDLLを使用する必要があるVB.NETプロジェクトを持っています。だから私はこのようなものを持っています:

Hummingbird.DM.Server.Interop.PCDClient.dll
PCDClient.dll

プロジェクト内のインターロップへの参照を直接追加しようとしましたが、ファイルを実行すると、登録されていないエラーがありませんでした。

それで、私は次のようにインターナットを登録しようとしました:

gacutil /if "C:\....\Hummingbird.DM.Server.Interop.PCDClient.dll"

regasm "C:\....\Hummingbird.DM.Server.Interop.PCDClient.dll"

VSを再起動した後でも、アセンブリはまだ表示されていません。

役に立ちましたか?

解決

Regasmコマンドは、COMサーバーのレジストリキーを破壊しました。再インストールする必要があります。独自の[comvisible]コードでのみレジャムを使用します。

コンポーネントを使用するのに問題があるかもしれない理由の1つは、それを超えて正しくインストールされていないだけで、64ビットオペレーティングシステムでこれを実行しようとしているためです。コンポーネントは32ビットで、最も一般的なケースです。使用できるように、アプリに32ビットモードで実行させる必要があります。 VB.Net IDEでは、プロジェクト +プロパティ、コンパイルタブ、スクロールダウン、アドバンスコンパイルオプション、ターゲットCPUを「x86」に設定して行われます。

このような問題の究極のトラブルシューティングツールは、SysinternalsのProcmonユーティリティです。 COMがHKLM Software classes clsIDキーを使用して、DLLを検索する方法を示します。

他のヒント

インターナットを登録していますが、(エラーメッセージが示唆するように)com dllを登録していません。これを試して:

regsvr32 pdcclient.dll
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top