次の方法で共有


方法 : COM ラッパーを作成する

更新 : 2007 年 11 月

コンポーネント オブジェクト モデル (COM: Component Object Model) ラッパーを作成するには、Microsoft Visual Studio 2005 の機能または .NET Framework のツールである Tlbimp.exe と Regasm.exe を使用します。どちらの方法でも 2 種類の COM ラッパーが生成されます。

Visual Studio 2005 では、COM ラッパーを参照としてプロジェクトに追加できます。

マネージ アプリケーションでの COM オブジェクトのラップ

Visual Studio を使用してランタイム呼び出し可能ラッパーを作成するには

  1. マネージ アプリケーションのプロジェクトを開きます。

  2. [プロジェクト] メニューの [すべてのファイルを表示] をクリックします。

  3. [プロジェクト] メニューの [参照の追加] をクリックします。

  4. [参照の追加] ダイアログ ボックスで、[COM] タブをクリックし、使用するコンポーネントを選択して [OK] をクリックします。

    ソリューション エクスプローラで、プロジェクトの [参照設定] フォルダに COM コンポーネントが追加されていることを確認します。

これで、COM オブジェクトにアクセスするためのコードを作成できます。まずオブジェクトを宣言します。これには、Visual Basic 2005 の Imports ステートメント、Visual C# 2005 の Using ステートメントなどを使用します。

ms404285.alert_note(ja-jp,VS.90).gifメモ :

Microsoft Office コンポーネントをプログラミングする場合は、最初に Microsoft ダウンロード センターから Microsoft Office プライマリ相互運用機能アセンブリ (PIA: Primary Interop Assembly) をインストールします。手順 4. で、目的の Office 製品向けに用意されているオブジェクト ライブラリの最新バージョンを選択します (Microsoft Word 11.0 Object Library など)。サンプルについては、「Microsoft Word 関連の技術サンプル」および「Microsoft Excel 関連の技術サンプル」を参照してください。

.NET Framework のツールを使用してランタイム呼び出し可能ラッパーを作成するには

このツールは、元のタイプ ライブラリで定義された型のランタイム メタデータを含むアセンブリを作成します。

ネイティブ アプリケーションでのマネージ オブジェクトのラップ

Visual Studio を使用して COM 呼び出し可能ラッパーを作成するには

  1. ネイティブ コードで実行するマネージ クラス用にクラス ライブラリ プロジェクトを作成します。このクラスには既定のコンストラクタが必要です。

    AssemblyInfo ファイル内で、4 つの部分で構成される完全なバージョン番号がアセンブリに指定されていることを確認します。この番号は、Windows レジストリでバージョンを管理するために必要となります。バージョン番号の詳細については、「アセンブリのバージョン管理」を参照してください。

  2. [プロジェクト] メニューの [プロパティ] をクリックします。

  3. [コンパイル] タブをクリックします。

  4. [COM の相互運用機能に登録] チェック ボックスをオンにします。

プロジェクトをビルドすると、COM 相互運用機能に対してアセンブリが自動的に登録されます。Visual Studio 2005 でネイティブ アプリケーションをビルドする場合は、[プロジェクト] メニューの [参照の追加] をクリックすることでアセンブリを使用できます。

.NET Framework のツールを使用して COM 呼び出し可能ラッパーを作成するには

このツールは、アセンブリ メタデータを読み取って、必要なエントリをレジストリに追加します。この結果、COM クライアントが .NET Framework クラスを透過的に作成できるようになります。アセンブリは、ネイティブ COM クラスと同じように使用できます。

任意のディレクトリにあるアセンブリで Regasm.exe を実行し、さらにグローバル アセンブリ キャッシュ ツール (Gacutil.exe) を実行してそのアセンブリをグローバル アセンブリ キャッシュに移動できます。アセンブリを移動しても、場所のレジストリ エントリは無効になりません。これは、アセンブリが他の場所で見つからない場合に常にグローバル アセンブリ キャッシュが調べられるからです。

参照

概念

ランタイム呼び出し可能ラッパー

COM 呼び出し可能ラッパー