タイプ ライブラリのアセンブリとしてのインポート
更新 : 2007 年 11 月
COM 型の定義は、通常はタイプ ライブラリに存在します。これに対し、CLS 準拠のコンパイラは、型メタデータをアセンブリ内に生成します。型情報に関するこれら 2 つのソースは、まったく異なっています。
メモ : |
---|
入手できる場合は必ず、マネージ コードに組み込む COM コンポーネントの作成者が発行したプライマリ相互運用機能アセンブリを使用してください。プライマリ相互運用機能アセンブリ内の型は既にインポートされ、アクティブにできるようになっているため、マネージ コードから呼び出すことができます。プライマリ相互運用機能アセンブリの作成と使用の詳細については、「プライマリ相互運用機能アセンブリ」を参照してください。 |
このトピックでは、タイプ ライブラリからメタデータを生成する方法を説明します。生成されたアセンブリは、相互運用機能アセンブリと呼ばれます。
メタデータの生成
COM タイプ ライブラリは、Loanlib.tlb のような、スタンドアロンの TLB ファイルにすることができます。また、DLL ファイルや EXE ファイルのリソース セクションに埋め込まれるタイプ ライブラリもあります。タイプ ライブラリ情報のその他のソースとしては、OLB ファイルと OCX ファイルがあります。
対象とする COM 型の実装を含んだタイプ ライブラリの場所を特定した後は、次のオプションで型メタデータを格納した相互運用機能アセンブリを生成できます。
Visual Studio 2005
Visual Studio 2005 を使用します。これはタイプ ライブラリ内の COM 型をアセンブリ内のメタデータに自動的に変換します。手順については、「方法 : タイプ ライブラリへの参照を追加する」を参照してください。
-
タイプ ライブラリ インポータには、生成される相互運用ファイル内のメタデータを調整するコマンド ライン オプションが用意されていて、既存のタイプ ライブラリから型をインポートし、相互運用機能アセンブリおよび名前空間を生成します。手順については、「方法 : 相互運用アセンブリをタイプ ライブラリから生成する」を参照してください。
TypeLibConverter クラス
TypeLibConverter クラスは System.Runtime.InteropServices 名前空間に含まれており、タイプ ライブラリ内のコクラスおよびインターフェイスをアセンブリ内のメタデータに変換するメソッドを提供します。この API は、Tlbimp.exe と同じメタデータ出力を生成します。ただし、Tlbimp.exe とは異なり、TypeLibConverter クラスではインメモリ タイプ ライブラリをメタデータに変換できます。
カスタム ラッパー
タイプ ライブラリが利用できないか、または無効である場合には、1 つの選択肢として、マネージ ソース コードでクラスまたはインターフェイスの複製定義を作成する方法があります。その後で、ランタイムを対象とするコンパイラでソース コードをコンパイルし、アセンブリ内にメタデータを生成します。
COM 型を手動で定義するには、次の項目にアクセスできる必要があります。
定義するコクラスおよびインターフェイスの詳細な説明。
適切な .NET Framework クラス定義を生成できる、C# コンパイラなどのコンパイラ。
タイプ ライブラリからアセンブリへの変換規則に関する知識。
カスタム ラッパーの作成は、きわめて高度な技術です。カスタム ラッパーの生成の詳細については、「標準ラッパーのカスタマイズ」を参照してください。
COM 相互運用機能のインポート プロセスの詳細については、「タイプ ライブラリからアセンブリへの変換の要約」を参照してください。
参照
処理手順
方法 : 相互運用機能アセンブリをタイプ ライブラリから生成する
概念
.NET Framework への COM コンポーネントの公開