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

タイプ ライブラリ エクスポーターは、共通言語ランタイム アセンブリで定義されている型を記述するタイプ ライブラリを生成します。The Type Library Exporter generates a type library that describes the types defined in a common language runtime assembly.

このツールは、Visual Studio と共に自動的にインストールされます。This tool is automatically installed with Visual Studio. このツールを実行するには、Visual Studio 用開発者コマンド プロンプト (または Windows 7 の Visual Studio コマンド プロンプト) を使用します。To run the tool, use the Developer Command Prompt for Visual Studio (or the Visual Studio Command Prompt in Windows 7). 詳細については、「Visual Studio 用開発者コマンド プロンプト」を参照してください。For more information, see Command Prompts.

コマンド プロンプトに次のように入力します。At the command prompt, type the following:

構文Syntax

tlbexp assemblyName [options]  

パラメーターParameters

引数Argument 説明Description
assemblyNameassemblyName タイプ ライブラリをエクスポートする対象のアセンブリ。The assembly for which to export a type library.
オプションOption 説明Description
/asmpath: directory/asmpath: directory アセンブリを検索する場所を指定します。Specifies the location to search for assemblies. このオプションを使用する場合は、現在のディレクトリを含め、参照アセンブリの検索場所を明示的に指定する必要があります。If you use this option, you must explicitly specify the locations to search for referenced assemblies, including the current directory.

asmpath オプションを使用すると、タイプ ライブラリ エクスポーターは、グローバル アセンブリ キャッシュ (GAC) 内のアセンブリを検索しません。When you use the asmpath option, the Type Library Exporter will not look for an assembly in the global assembly cache (GAC).
/help/help このツールのコマンド構文とオプションを表示します。Displays command syntax and options for the tool.
/names: filename/names: filename タイプ ライブラリにおける大文字の使用スタイルを指定します。Specifies the capitalization of names in a type library. filename 引数はテキスト ファイルです。The filename argument is a text file. このファイルには、タイプ ライブラリ内の名前に対する大文字の使用スタイルを 1 行に 1 つずつ指定します。Each line in the file specifies the capitalization of one name in the type library.
/nologo/nologo Microsoft 著作権情報を表示しません。Suppresses the Microsoft startup banner display.
/oldnames/oldnames 型名が競合している場合は、Tlbexp.exe は装飾された型名をエクスポートします。Forces Tlbexp.exe to export decorated type names if there is a type name conflict. バージョン 2.0 より以前の .NET Framework では、これが既定の動作であることに注意してください。Note that this was the default behavior in versions prior to the .NET Framework version 2.0.
/out: file/out: file 生成するタイプ ライブラリ ファイルの名前を指定します。Specifies the name of the type library file to generate. このオプションを省略した場合、アセンブリ名に拡張子 .tlb を付加した名前のタイプ ライブラリが生成されます。このアセンブリ名は実際のアセンブリ名ですが、アセンブリを含むファイルの名前と必ずしも同じである必要はありません。If you omit this option, Tlbexp.exe generates a type library with the same name as the assembly (the actual assembly name, which might not necessarily be the same as the file containing the assembly) and a .tlb extension.
/silence: warningnumber/silence: warningnumber 指定された警告を表示しません。Suppresses the display of the specified warning. このオプションは、/silent オプションと共に使用することはできません。This option cannot be used with /silent.
/silent/silent 成功メッセージを表示しません。Suppresses the display of success messages. このオプションは、/silence オプションと共に使用することはできません。This option cannot be used with /silence.
/tlbreference: typelibraryname/tlbreference: typelibraryname Tlbexp.exe はレジストリを参照せずに、タイプ ライブラリの参照を明示的に解決します。Forces Tlbexp.exe to explicitly resolve type library references without consulting the registry. たとえば、アセンブリ B がアセンブリ A を参照する場合は、レジストリで指定されているタイプ ライブラリを参照するのではなく、このオプションを使用してタイプ ライブラリの参照を明示的に指定できます。For example, if assembly B references assembly A, you can use this option to provide an explicit type library reference, rather than relying on the type library specified in the registry. Tlbexp.exe はバージョン チェックを実行して、タイプ ライブラリとアセンブリのバージョンが同じであることを確認します。バージョンが異なる場合は、エラーを生成します。Tlbexp.exe performs a version check to ensure that the type library version matches the assembly version; otherwise, it generates an error.

tlbreference オプションを指定しても、ComImportAttribute 属性の適用先のインターフェイスが別の型に実装される場合には、レジストリが参照されます。Note that the tlbreference option still consults the registry in cases where the ComImportAttribute attribute is applied to an interface that is then implemented by another type.
/tlbrefpath: path/tlbrefpath: path 参照タイプ ライブラリの絶対パス。Fully qualified path to a referenced type library.
/win32/win32 このオプションを指定すると、64 ビットのコンピューターでコンパイルする場合、Tlbexp.exe は 32 ビットのタイプ ライブラリを生成します。When compiling on a 64-bit computer, this option specifies that Tlbexp.exe generates a 32-bit type library.
/win64/win64 このオプションを指定すると、32 ビットのコンピューターでコンパイルする場合、Tlbexp.exe は 64 ビットのタイプ ライブラリを生成します。When compiling on a 32-bit computer, this option specifies that Tlbexp.exe generates a 64-bit type library.
/verbose/verbose 詳細出力モードを指定します。このモードでは、タイプ ライブラリを生成する必要のある参照先アセンブリがある場合は、その一覧を表示します。Specifies verbose mode; displays a list of any referenced assemblies for which a type library needs to be generated.
/?/? このツールのコマンド構文とオプションを表示します。Displays command syntax and options for the tool.

注意

Tlbexp.exe のコマンド ライン オプションでは、大文字と小文字が区別されません。また、これらのオプションは任意の順序で指定できます。The command-line options for Tlbexp.exe are case-insensitive and can be supplied in any order. オプションを一意に識別するために十分である場合は、オプションの一部を指定するだけでもかまいません。You only need to specify enough of the option to uniquely identify it. たとえば、/n を指定した場合は /nologo/o: outfile.tlb と指定した場合は /out: outfile.tlb であると見なされます。For example, /n is equivalent to /nologo, and /o: outfile.tlb is equivalent to /out: outfile.tlb.

解説Remarks

Tlbexp.exe は、アセンブリで定義されている型の定義を含む、タイプ ライブラリを生成します。Tlbexp.exe generates a type library that contains definitions of the types defined in the assembly. Visual Basic 6.0 などのアプリケーションは、このツールで生成されたタイプ ライブラリを使用して、アセンブリ内で定義されている .NET 型にバインドできます。Applications such as Visual Basic 6.0 can use the generated type library to bind to the .NET types defined in the assembly.

重要

Tlbexp.exe を使用して Windows メタデータ (.winmd) ファイルをエクスポートすることはできません。You cannot use Tlbexp.exe to export Windows metadata (.winmd) files. Windows ランタイム アセンブリのエクスポートはサポートされていません。Exporting Windows Runtime assemblies is not supported.

アセンブリ全体が一度に変換されます。The entire assembly is converted at once. Tlbexp.exe を使用しても、アセンブリで定義されている型のサブセットに関する型情報は生成できません。You cannot use Tlbexp.exe to generate type information for a subset of the types defined in an assembly.

Tlbexp.exe を使用して、タイプ ライブラリ インポーター (Tlbimp.exe) でインポートしたアセンブリからタイプ ライブラリを生成することもできません。You cannot use Tlbexp.exe to produce a type library from an assembly that was imported using the Type Library Importer (Tlbimp.exe). 代わりに、Tlbimp.exe でインポートした元のタイプ ライブラリを参照する必要があります。Instead, you should refer to the original type library that was imported with Tlbimp.exe. しかし、Tlbimp.exe でインポートしたアセンブリを参照するアセンブリから、タイプ ライブラリをエクスポートすることはできます。You can export a type library from an assembly that references assemblies that were imported using Tlbimp.exe. 後の例を参照してください。See the examples section below.

Tlbexp.exe は、生成したタイプ ライブラリを現在のディレクトリ、または出力ファイルとして指定したディレクトリに格納します。Tlbexp.exe places generated type libraries in the current working directory or the directory specified for the output file. 単一のアセンブリから複数のタイプ ライブラリが生成されることもあります。A single assembly might cause several type libraries to be generated.

Tlbexp.exe はタイプ ライブラリを生成しますが、生成したタイプ ライブラリの登録は行いません。Tlbexp.exe generates a type library but does not register it. これは、タイプ ライブラリの生成と登録を両方とも行うアセンブリ登録ツール (Regasm.exe) とは対照的です。This is in contrast to the Assembly Registration tool (Regasm.exe), which both generates and registers a type library. タイプ ライブラリを生成して COM に登録するには、Regasm.exe を使用します。To generate and register a type library with COM, use Regasm.exe.

/win32 オプションまたは /win64 オプションを指定しないと、Tlbexp.exe はコンパイルを実行するコンピューターのタイプ (32 ビット コンピューターまたは 64 ビット コンピューター) に応じて、32 ビットまたは 64 ビットのタイプ ライブラリを生成します。If you do not specify either the /win32 or /win64 option, Tlbexp.exe generates a 32-bit or 64-bit type library that corresponds to the type of computer on which you are performing the compilation (32-bit or 64-bit computer). クロス コンパイルを行う場合は、32 ビット コンピューター上で /win64 オプションを使用して 64 ビットのタイプ ライブラリを生成したり、64 ビット コンピューター上で /win32 オプションを使用して 32 ビットのタイプ ライブラリを生成したりできます。For cross-compilation purposes, you can use the /win64 option on a 32-bit computer to generate a 64-bit type library and you can use the /win32 option on a 64-bit computer to generate a 32-bit type library. 32 ビットのタイプ ライブラリでは、SYSKIND 値は SYS_WIN32 に設定されます。In 32-bit type libraries, the SYSKIND value is set to SYS_WIN32. 64 ビットのタイプ ライブラリでは、SYSKIND 値は SYS_WIN64 に設定されます。In 64-bit type libraries, the SYSKIND value is set to SYS_WIN64. すべてのデータ型変換 (たとえば、IntPtrUIntPtr などのポインター-サイズ データ型) は、適切に変換されます。All data type transformations (for example, pointer-sized data types such as IntPtr and UIntPtr) are converted appropriately.

MarshalAsAttribute 属性を使用して、SafeArraySubType または VT_UNKOWNVT_DISPATCH 値を指定すると、Tlbexp.exe は後続で使用される SafeArrayUserDefinedSubType フィールドをすべて無視します。If you use the MarshalAsAttribute attribute to specify a SafeArraySubType value of VT_UNKOWN or VT_DISPATCH, Tlbexp.exe ignores any subsequent use of the SafeArrayUserDefinedSubType field. たとえば、次のようなシグネチャがあるとします。For example, given the following signatures:

[return:MarshalAs(UnmanagedType.SafeArray, SafeArraySubType=VarEnum.VT_UNKNOWN, SafeArrayUserDefinedSubType=typeof(ConsoleKeyInfo))] public Array StructUnkSafe(){return null;}  
[return:MarshalAs(UnmanagedType.SafeArray, SafeArraySubType=VarEnum.VT_DISPATCH, SafeArrayUserDefinedSubType=typeof(ConsoleKeyInfo))] public Array StructDispSafe(){return null;}  

次のタイプ ライブラリが生成されます。the following type library is generated:

[id(0x60020004)]  
HRESULT StructUnkSafe([out, retval] SAFEARRAY(IUnknown*)* pRetVal);  
[id(0x60020005)]  
HRESULT StructDispSafe([out, retval] SAFEARRAY(IDispatch*)* pRetVal);  

Tlbexp.exe は SafeArrayUserDefinedSubType フィールドを無視することに注意してください。Note that Tlbexp.exe ignores the SafeArrayUserDefinedSubType field.

アセンブリ内にあるすべての情報をタイプ ライブラリに含めることはできないので、エクスポート プロセス中、Tlbexp.exe によって一部のデータが破棄される場合があります。Because type libraries cannot accommodate all the information found in assemblies, Tlbexp.exe might discard some data during the export process. 変換処理、およびタイプ ライブラリに出力される各情報のソースの識別については、「アセンブリからタイプ ライブラリへの変換の要約」を参照してください。For an explanation of the transformation process and identification of the source of each piece of information emitted to a type library, see the Assembly to Type Library Conversion Summary.

タイプ ライブラリ エクスポーターは、TypedReference オブジェクトがアンマネージ コードで意味を持たない場合でも、VARIANT パラメーターが TypedReference であるメソッドをエクスポートします。Note that the Type Library Exporter exports methods that have TypedReference parameters as VARIANT, even though the TypedReference object has no meaning in unmanaged code. TypedReference パラメーターを持つメソッドをエクスポートしても、タイプ ライブラリ エクスポーターは警告やエラーを生成しません。作成されたタイプ ライブラリを使用するアンマネージ コードは、正しく動作しません。When you export methods that have TypedReference parameters, the Type Library Exporter will not generate a warning or error and unmanaged code that uses the resulting type library will not run properly.

タイプ ライブラリ エクスポーターは、Microsoft Windows 2000 以降でサポートされます。The Type Library Exporter is supported on Microsoft Windows 2000 and later.

使用例Examples

myTest.dll 内で見つかったアセンブリと同じ名前を持つタイプ ライブラリを生成するコマンドを次に示します。The following command generates a type library with the same name as the assembly found in myTest.dll.

tlbexp myTest.dll  

clipper.tlb という名前を持つタイプ ライブラリを生成するコマンドを次に示します。The following command generates a type library with the name clipper.tlb.

tlbexp myTest.dll /out:clipper.tlb  

Tlbexp.exe を使用してインポートしたアセンブリを参照するアセンブリから、Tlbimp.exe を使用してタイプ ライブラリをエクスポートする例を次に示します。The following example illustrates using Tlbexp.exe to export a type library from an assembly that references assemblies that were imported using Tlbimp.exe.

まず、Tlbimp.exe を使用してタイプ ライブラリ myLib.tlb をインポートし、myLib.dll として保存します。First use Tlbimp.exe to import the type library myLib.tlb and save it as myLib.dll.

tlbimp myLib.tlb /out:myLib.dll  

上記の例で作成した Sample.dll, を参照する myLib.dll を C# コンパイラでコンパイルするコマンドを次に示します。The following command uses the C# compiler to compile the Sample.dll, which references myLib.dll created in the previous example.

CSC Sample.cs /reference:myLib.dll /out:Sample.dll  

Sample.dll を参照する myLib.dll 用のタイプ ライブラリを生成するコマンドを次に示します。The following command generates a type library for Sample.dll that references myLib.dll.

tlbexp Sample.dll  

関連項目See also