0

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

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

プロジェクトに相互運用機能への参照を直接追加しようとしましたが、ファイルを実行すると、COM が登録されていないというエラーが発生しました。

そこで、次のように相互運用を登録してみました。

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

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

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

4

2 に答える 2

1

regasm コマンドにより、COM サーバーのレジストリ キーが破棄されました。再インストールする必要があります。独自の [ComVisible] コードでのみ regasm を使用してください。

コンポーネントが正しくインストールされていないだけでなく、コンポーネントの使用に問題がある理由の 1 つは、64 ビット オペレーティング システムでこれを実行しようとしているからです。また、コンポーネントは 32 ビットであり、最も一般的なケースです。アプリを使用できるようにするには、アプリを強制的に 32 ビット モードで実行する必要があります。VB.NET IDE では、[プロジェクト] + [プロパティ] の [コンパイル] タブで、下にスクロールして [高度なコンパイル オプション] を選択し、[ターゲット CPU] を "x86" に設定します。

このような問題に対する究極のトラブルシューティング ツールは、SysInternals の ProcMon ユーティリティです。COM が HKLM\Software\Classes\CLSID キーを使用して、ロードする DLL を検索する方法を示しています。

于 2011-01-14T17:06:17.760 に答える
0

相互運用機能を登録していますが、(エラー メッセージが示すように) COM DLL を登録していません。これを試して:

regsvr32 pdcclient.dll
于 2011-01-14T16:52:16.643 に答える