次の方法で共有


タイプ ライブラリのアセンブリとしてのインポート

COM 型の定義は、通常はタイプ ライブラリに存在します。 これに対し、CLS 準拠のコンパイラは、型メタデータをアセンブリ内に生成します。 型情報に関するこれら 2 つのソースは、まったく異なっています。 このトピックでは、タイプ ライブラリからメタデータを生成する方法を説明します。 結果として生成されるアセンブリは相互運用機能アセンブリと呼ばれ、それに含まれる型情報によって .NET Framework アプリケーションは COM 型を使用できます。

この型情報をアプリケーションで使用する方法には、次の 2 つがあります。

  • デザイン時のみの相互運用機能アセンブリを使用する: .NET Framework Version 4 以降では、相互運用機能アセンブリから実行可能ファイルに型情報を埋め込むようにコンパイラに指示できます。 コンパイラは、アプリケーションが使用する型情報のみを埋め込みます。 アプリケーションで相互運用機能アセンブリを配置する必要はありません。 この手法を使用することをお勧めします。

  • 相互運用機能アセンブリを配置する: 相互運用機能アセンブリへの標準の参照を作成できます。 この場合、アプリケーションで相互運用機能アセンブリを配置する必要があります。 この手法を採用する場合に、プライベートの COM コンポーネントを使用しないときは、必ず、マネージ コードに組み込む COM コンポーネントの作成者が発行したプライマリ相互運用機能アセンブリ (PIA) を参照してください。 プライマリ相互運用機能アセンブリの作成と使用の詳細については、「プライマリ相互運用機能アセンブリ」を参照してください。

デザイン時のみの相互運用機能アセンブリを使用するとき、COM コンポーネントの作成者が発行したプライマリ相互運用機能アセンブリから型情報を埋め込むことができます。 ただし、アプリケーションで相互運用機能アセンブリを配置する必要はありません。

COM コンポーネントのすべての機能を使用するアプリケーションはほとんどないため、デザイン時のみの相互運用機能アセンブリを使用するとアプリケーションのサイズが小さくなります。 コンパイラは、型情報を埋め込むとき、非常に効率的に処理を実行します。アプリケーションが COM インターフェイスの一部のメソッドしか使用しない場合、コンパイラは使用されないメソッドの埋め込みは行いません。 埋め込み型情報を持つアプリケーションが他の同様のアプリケーションと対話したり、プライマリ相互運用機能アセンブリを使用するアプリケーションと対話したりするとき、共通言語ランタイムは型等価性の規則を使用して、同じ名前を持つ 2 つの型が同じ COM 型を表しているかどうかを確認します。 COM オブジェクトを使用するために、これらの規則について理解しておく必要はありません。 この規則に関心がある場合は、「型の等価性と埋め込まれた相互運用機能型」を参照してください。

メタデータの生成

COM タイプ ライブラリは、Loanlib.tlb などの .tlb 拡張子を持つスタンドアロンのファイルである場合があります。 .dll ファイルまたは .exe ファイルのリソース セクションに埋め込まれるタイプ ライブラリもあります。 タイプ ライブラリ情報のその他のソースとして、.olb ファイルと .ocx ファイルがあります。

対象の COM 型の実装を含むタイプ ライブラリの場所を特定したら、次のいずれかの方法で型メタデータを格納する相互運用機能アセンブリを生成できます。

  • Visual Studio

    Visual Studio を使用して、タイプ ライブラリの COM 型をアセンブリのメタデータに自動的に変換します。 手順については、「方法: タイプ ライブラリへの参照を追加する」および「チュートリアル: Microsoft Office アセンブリからの型情報の埋め込み (C# および Visual Basic)」を参照してください。

  • タイプ ライブラリ インポーター (Tlbimp.exe)

    タイプ ライブラリ インポーターには、生成される相互運用ファイル内のメタデータを調整するコマンド ライン オプションが用意されていて、既存のタイプ ライブラリから型をインポートし、相互運用機能アセンブリおよび名前空間を生成します。 手順については、「方法 : 相互運用アセンブリをタイプ ライブラリから生成する」を参照してください。

  • System.Runtime.InteropServices.TypeLibConverter クラス

    このクラスは、タイプ ライブラリ内のコクラスとインターフェイスをアセンブリ内のメタデータに変換するメソッドを提供します。 これは、Tlbimp.exe と同じメタデータ出力を生成します。 ただし、TypeLibConverter クラスは、Tlbimp.exe とは異なり、インメモリ タイプ ライブラリをメタデータに変換できます。

  • カスタム ラッパー

    タイプ ライブラリが利用できないか、または無効である場合には、1 つの選択肢として、マネージ ソース コードでクラスまたはインターフェイスの複製定義を作成する方法があります。 その後で、ランタイムを対象とするコンパイラでソース コードをコンパイルし、アセンブリ内にメタデータを生成します。

    COM 型を手動で定義するには、次の項目にアクセスできる必要があります。

    • 定義するコクラスおよびインターフェイスの詳細な説明。

    • 適切な .NET Framework クラス定義を生成できる、C# コンパイラなどのコンパイラ。

    • タイプ ライブラリからアセンブリへの変換規則に関する知識。

    カスタム ラッパーを作成することは、高度な手法です。 カスタム ラッパーを生成する方法の詳細については、「標準ラッパーのカスタマイズ」を参照してください。

COM 相互運用機能のインポート プロセスの詳細については、「タイプ ライブラリからアセンブリへの変換の要約」を参照してください。

参照

処理手順

方法: タイプ ライブラリへの参照を追加する

方法: 相互運用機能アセンブリをタイプ ライブラリから生成する

参照

Tlbimp.exe (タイプ ライブラリ インポーター)

TypeLibConverter

概念

.NET Framework への COM コンポーネントの公開

標準ラッパーのカスタマイズ

マネージ コードでの COM 型の使用

相互運用プロジェクトのコンパイル

相互運用アプリケーションの配置

その他の技術情報

タイプ ライブラリからアセンブリへの変換の要約

チュートリアル: Microsoft Office アセンブリからの型情報の埋め込み (C# および Visual Basic)