VB6でコードを記述すると、コンパイル結果はCOMコンポーネントになります。 COMコンポーネントは、通常、COMタイプライブラリを使用して記述されるインタフェース、コクラス、構造体、列挙型を提供します。ただし、.NETのCOMコンポーネントを使用するには、.NETが理解できる形式(つまり、型ライブラリを直接使用できないため.NETアセンブリ)で型記述が必要です。したがってinteropアセンブリは、タイプライブラリ内の同じものに対応するインタフェース、構造体などの記述を含むという意味で、単に "変換された" COM型ライブラリです。
(相互運用機能アセンブリがタイプライブラリから製造されるを持っていないとして上記の、やや単純化している - 。あなたは手でコードすることができますいずれかをしたい場合は、例えば)
であることに反して
interopアセンブリには実行可能なコードが含まれていないことが多く、マーシャリングは行われません。それは型定義のみを含み、メソッドを持つことができる唯一の場所はインターフェースにあり、インターフェースのメソッドには実装がありません。 .NET呼び出しをCOMに呼び出すことは、実際には相互運用アセンブリから読み込まれた型記述に基づいてCLR自体によって実行されます。必要なコードはすべてオンザフライで生成されます。
あなたの質問にお答えします。 COM DLL(VB6の出力)プロジェクトを登録する必要があります。たとえば、regsvr32.exe
を使用します。 COMコンポーネントではないので、interopアセンブリを登録することはできません(実際にはできません)。これはプレーンな.NETアセンブリなので、.exe/.dllを使用して同じフォルダに配置するかいつものようにGACに入れてください。
+1他に誰もあなたに投票しなくても良い質問だったと思います。 :) – Dusty