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

更新 : 2011 年 4 月

タイプ ライブラリ インポーターは、COM タイプ ライブラリにある型定義を共通言語ランタイム アセンブリで等価な定義に変換します。 Tlbimp.exe の出力は、元のタイプ ライブラリで定義された型のランタイム メタデータを格納するバイナリ ファイル (アセンブリ) です。 このファイルは ildasm.exe などのツールでチェックできます。

このツールは Visual Studio および Windows SDK と一緒に自動的にインストールされます。 このツールを実行するには、Visual Studio コマンド プロンプトまたは Windows SDK コマンド プロンプト (CMD シェル) を使用することをお勧めします。 これらのユーティリティを使用すると、インストール フォルダーに移動することなくツールを簡単に実行できます。 詳細については、「Visual Studio と Windows SDK のコマンド プロンプト」を参照してください。

  • コンピューターに Visual Studio がインストールされている場合は、タスク バーの [Start] ボタンをクリックし、[All Programs]、[Visual Studio]、[Visual Studio Tools]、[Visual Studio Command Prompt] の順にクリックします。

    または

    コンピューターに Windows SDK がインストールされている場合は、タスク バーの [Start] ボタンをクリックし、[All Programs]、Windows SDK のフォルダー、[Command Prompt] (または [CMD Shell]) の順にクリックします。

  • コマンド プロンプトに次のように入力します。

tlbimp tlbFile [options]

パラメーター

引数

説明

tlbFile

COM タイプ ライブラリを格納する任意のファイルの名前。

オプション

説明

/asmversion:versionNumber

生成するアセンブリのバージョン番号を指定します。 versionNumbermajor.minor.build.revision の形式で指定します。

/delaysign

Tlbimp.exe が遅延署名を使用して、生成されたアセンブリに厳密な名前で署名するように指定します。 このオプションは、/keycontainer:/keyfile:、または /publickey: のいずれかのオプションと共に指定する必要があります。 遅延署名プロセスの詳細については、「アセンブリへの遅延署名」を参照してください。

/help

このツールのコマンド構文とオプションを表示します。

/keycontainer:containername

containername で指定されたキー コンテナーの公開キーと秘密キーのペアを使用して、生成されたアセンブリに厳密な名前で署名します。

/keyfile:filename

filename にある発行者の正式な公開キーと秘密キーのペアを使用して、生成されたアセンブリに厳密な名前で署名します。

/namespace:namespace

アセンブリの生成先の名前空間を指定します。

/noclassmembers

Tlbimp.exe がメンバーをクラスに追加できないようにします。 これにより、TypeLoadException が発生する可能性がなくなります。

/nologo

Microsoft 著作権情報を表示しません。

/out:filename

メタデータ定義の書き込み先の出力ファイル、アセンブリ、および名前空間の名前を指定します。 アセンブリの名前空間を明示的に制御するインターフェイス定義言語 (IDL: Interface Definition Language) カスタム属性がタイプ ライブラリで指定されている場合、/out オプションはアセンブリの名前空間を制御できません。 このオプションを指定しない場合、Tlbimp.exe は、入力ファイルで定義された実際のタイプ ライブラリと同じ名前のファイルにメタデータを書き込み、そのファイルに .dll 拡張子を割り当てます。 出力ファイルの名前が入力ファイルと同じ場合は、タイプ ライブラリが上書きされるのを防ぐためにエラーが発生します。

/primary

指定したタイプ ライブラリのプライマリ相互運用機能アセンブリを生成します。 アセンブリに追加される情報は、アセンブリを生成したタイプ ライブラリの発行者を示します。 プライマリ相互運用機能アセンブリを指定すると、Tlbimp.exe を使用して、ある発行者のアセンブリとタイプ ライブラリから作成された他のアセンブリを区別します。 Tlbimp.exe を使用してインポートするタイプ ライブラリの発行者である場合は、/primary オプションを使用してください。 プライマリ相互運用機能アセンブリには、厳密な名前で署名する必要があります。 詳細については、「プライマリ相互運用機能アセンブリ」を参照してください。

/publickey:filename

生成されたアセンブリに署名するために使用する公開キーを格納するファイルを指定します。 /publickey: オプションの代わりに /keyfile: オプションまたは /keycontainer: オプションを指定した場合、Tlbimp.exe は、/keyfile: または /keycontainer: で指定された公開キーと秘密キーのペアから公開キーを生成します。 /publickey: オプションを指定すると、テスト キーと遅延署名を使用できます。 ファイルは Sn.exe で生成された形式になります。 詳細については、「厳密名ツール (Sn.exe)」にある Sn.exe の -p オプションの説明を参照してください。

/reference:filename

現在のタイプ ライブラリ以外で定義された型への参照を解決するために使用するアセンブリ ファイルを指定します。 /reference オプションを指定しない場合、Tlbimp.exe は、インポートされるタイプ ライブラリが参照しているすべての外部タイプ ライブラリを再帰的に自動インポートします。 /reference オプションを指定した場合、このツールは、他のタイプ ライブラリをインポートする前に、参照されたアセンブリ内の外部型を解決しようとします。

/silent

成功メッセージを表示しません。

/strictref

ツールが現在のアセンブリ内、/reference オプションで指定されたアセンブリ内、または登録されているプライマリ相互運用機能アセンブリ (PIA) 内のすべての参照を解決できない場合は、タイプ ライブラリをインポートしません。

/strictref:nopia

/strictref と同じですが、PIA を無視します。

/sysarray

ツールが COM スタイル SafeArray をマネージ System.Array クラス型としてインポートするように指定します。

/tlbreference:filename

レジストリを参照せずにタイプ ライブラリ参照を解決する場合に使用するタイプ ライブラリ ファイルを指定します。

このオプションでは、古いタイプ ライブラリの形式の一部が読み込まれないことに注意してください。 ただし、古いタイプ ライブラリの形式は、レジストリまたは現在のディレクトリから暗黙的に読み込むことができます。

/transform:transformName

transformName パラメーターで指定されたようにメタデータを変換します。

ディスパッチ専用インターフェイスに対するメソッドの [out, retval] パラメーターを戻り値に変換するには、transformName パラメーターに dispret を指定します。

このオプションの詳細については、このトピックの下記の例を参照してください。

/unsafe

.NET Framework セキュリティ チェックなしでインターフェイスを生成します。 この方法で公開されているメソッドを呼び出す場合には、セキュリティ上のリスクが伴います。 このオプションは、上記に該当するコードを公開するリスクを理解した上で使用してください。

/verbose

詳細モードを指定します。インポートされたタイプ ライブラリについての詳細情報を表示します。

/VariantBoolFieldToBool

構造体の VARIANT_BOOL フィールドを Boolean に変換します。

/?

このツールのコマンド構文とオプションを表示します。

メモメモ

Tlbimp.exe のコマンド ライン オプションでは、大文字と小文字が区別されません。また、これらのオプションは任意の順序で指定できます。オプションを一意に識別するために十分である場合は、オプションの一部を指定するだけでもかまいません。したがって、/n と指定した場合は /nologo/ou:outfile.dll と指定した場合は /out:outfile.dll であると見なされます。

解説

Tlbimp.exe は、タイプ ライブラリ全体の変換を一括して実行します。 このツールを使用しても、単一のタイプ ライブラリで定義されている型のサブセットに関する型情報は生成できません。

アセンブリへの厳密な名前の割り当てを許可しておくと、さまざまな場合に役立ちます。この割り当てが必須であることもあります。 このため、Tlbimp.exe には、厳密な名前を持つアセンブリを生成するために必要な情報を提供するオプションが用意されています。 /keyfile: オプションと /keycontainer: オプションは、両方ともアセンブリに厳密な名前で署名します。 したがって、これらのオプションを両方同時に指定しないでください。

複数のタイプ ライブラリを格納するモジュールから 1 つのタイプ ライブラリをインポートするときに、タイプ ライブラリ ファイルにリソース ID を追加することもできます。 Tlbimp.exe は、このファイルが現在のディレクトリにあるか、ユーザーが完全パスを指定した場合にだけこのファイルを認識できます。 このトピックの下記の例を参照してください。

myTest.tlb 内で見つかったタイプ ライブラリと同じ名前で、.dll 拡張子を持つアセンブリを生成するコマンドを次に示します。

tlbimp myTest.tlb 

myTest.dll という名前を持つアセンブリを生成するコマンドを次に示します。

tlbimp  myTest.tlb  /out:myTest.dll

MyModule.dll\1 で指定されているタイプ ライブラリと同じ名前で、.dll 拡張子を持つアセンブリを生成するコマンドを次に示します。 MyModule.dll\1 は現在のディレクトリ内に置かれている必要があります。

tlbimp MyModule.dll\1

タイプ ライブラリ TestLib.dll に対して、myTestLib.dll という名前のアセンブリを生成するコマンドを次に示します。 /transform:dispret オプションは、タイプ ライブラリのディスパッチ インターフェイスに対するメソッドの [out, retval] パラメーターをマネージ ライブラリの戻り値に変換します。

tlbimp TestLib.dll /transform:dispret /out:myTestLib.dll

上記の例のタイプ ライブラリ TestLib.dll には、void 型を返し、[out, retval] パラメーターを持つ、SomeMethod という名前のディスパッチ インターフェイス メソッドが含まれています。 TestLib.dll の SomeMethod に対する入力タイプ ライブラリ メソッド シグネチャのコードを次に示します。

void SomeMethod([out, retval] VARIANT_BOOL*);

/transform:dispret オプションを指定すると、Tlbimp.exe は、SomeMethod の [out, retval] パラメーターを bool 型の戻り値に変換します。 /transform:dispret オプションを指定した場合に、Tlbimp.exe が、マネージ ライブラリ myTestLib.dll で SomeMethod に対して生成するメソッド シグネチャを次に示します。

bool SomeMethod();

Tlbimp.exe を使用して、/transform:dispret を指定せずに TestLib.dll のマネージ ライブラリを生成すると、マネージ ライブラリ myTestLib.dll には SomeMethod の次のメソッド シグネチャが生成されます。

void SomeMethod(out bool x);

参照

参照

Tlbexp.exe (タイプ ライブラリ エクスポーター)

Ildasm.exe (MSIL 逆アセンブラー)

Sn.exe (厳密名ツール)

Visual Studio と Windows SDK のコマンド プロンプト

概念

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

厳密な名前付きアセンブリ

タイプ ライブラリを相互運用機能アセンブリにインポートするための属性

その他の技術情報

.NET Framework ツール

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

履歴の変更

日付

履歴

理由

2011 年 4 月

Visual Studio と Windows SDK のコマンド プロンプトの使用に関する情報を追加。

情報の拡充

2010 年 5 月

不足していたスイッチを追加。

コンテンツ バグ修正