0

.NetCOMの表示可能なdllとVB6dllがあります。GACに.Netdllを登録し、VB6dllを登録しました。私の質問は、VB6dllがGACにある.Netdllを参照できるかどうかです。はいの場合、これはどのように行うことができますか?通常、私はregasm.Net dllで使用し、すべてが正常ですが、現在.Net dllはGACにあるため、この方法は不可能だと思います。

4

2 に答える 2

1

GACを使用した場合、またはVB6 DLLプロジェクトから使用しようとした場合に、これが機能しなくなるような特別なことは何もありません。アーリーバウンドコード(実際のタイプ名、オートコンプリートが機能する)を記述したい場合は、VB6IDEにタイプライブラリが必要です。これらは通常DLL内に埋め込まれていますが、.NET[ComVisible]アセンブリには当てはまりません。

Tlbexp.exeまたはRegasm.exeの/tlbコマンドラインオプションを使用してタイプライブラリを作成します。好き:

 regasm foo.dll /tlb:foo.tlb

これで、VB6プロジェクトでタイプライブラリを使用できます。VB6 IDEで、[プロジェクト+参照]を使用し、[参照]をクリックして、foo.tlbファイルに移動します。

また、GACはDLL地獄を回避するための良い方法ですが、マシンのGACを汚染するため、通常は開発マシンでは使用しないことに注意してください。Regasm / codebaseオプションを使用して、DLLが保存されているディレクトリに登録します。GACは必要ありません。これを行うと、Regasmから警告が表示され、DLLHellのリスクがあることを思い出させようとします。しかし、それはあなたにとってではなく、あなたのユーザーにとっての問題です。したがって、警告は無視しても問題ありません。

于 2012-08-14T12:36:22.820 に答える
0

これは可能ですが、方法は.NetDLLを展開する方法によって異なります。

スクリプトで実行する場合は、次のように実行できます。

  1. dllをフォルダ(c:\ program files \ myproduct \ mydll.dllなど)にコピーします
  2. regasmを使用して、com相互運用用のdllを登録します
  3. gacutilを使用してGACに入力します

Visual Studioインストールプロジェクトを使用する場合:1。グローバルアセンブリキャッシュの特別なフォルダーをプロジェクトに追加します。2。dllの宛先フォルダーをGACに設定します。3。RegisterプロパティをvsdraCOMに設定します。

VB6から.NetDLLへの参照を追加する際に問題が発生した場合は、tlbexpを使用して.Net dllから.tlbファイルを作成し、タイプライブラリへの参照を追加します。

これは、プロセスのより詳細な説明へのリンクです: http ://www.simple-talk.com/dotnet/visual-studio/build-and-deploy-a-.net-com-assembly/

于 2012-08-14T11:16:02.320 に答える