Regasm.exe (アセンブリ登録ツール)

アセンブリ登録ツールは、1 つのアセンブリに含まれるメタデータを読み込み、必要なエントリをレジストリに追加します。これにより、COM クライアントによって .NET Framework クラスが自動的に作成されます。 クラスが登録されると、どの COM クライアントでも、そのクラスを COM クラスであるかのように使用できます。 クラスの登録は、アセンブリのインストール時に 1 回だけ行われます。 実際に登録されるまでは、アセンブリに含まれるクラスのインスタンスを COM から作成することはできません。

ツールを実行するには、、Visual Studio 開発者コマンド プロンプトまたは Visual Studio Developer PowerShell を使用します。

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

構文

regasm assemblyFile [options]

パラメーター

パラメーター 説明
assemblyFile COM に登録するアセンブリ。
オプション 説明
/codebase レジストリに Codebase エントリを作成します。 Codebase エントリによって、グローバル アセンブリ キャッシュにインストールされないアセンブリのファイル パスが指定されます。 登録しようとしているアセンブリを、後でグローバル アセンブリ キャッシュにインストールする場合は、このオプションを指定しないでください。 /codebase オプションと共に指定する assemblyFile 引数は、厳密な名前付きのアセンブリにすることを強くお勧めします。
/registered このツールが既に登録されているタイプ ライブラリだけを参照するように指定します。
/asmpath:directory アセンブリ参照を含むディレクトリを指定します。 /regfile オプションと共に使用する必要があります。
/nologo Microsoft 著作権情報を表示しません。
/regfile [:regFile] アセンブリについて指定した .reg ファイルを生成します。このファイルには必要なレジストリ エントリが含まれます。 このオプションを指定してもレジストリは変更されません。 このオプションは /u または /tlb オプションとは併用できません。
/silent または /s 成功メッセージを表示しません。
/tlb [:typeLibFile] 指定したアセンブリからタイプ ライブラリを生成します。このアセンブリには、アセンブリ内で定義されたアクセス可能な型の定義が含まれます。
/unregister または /u assemblyFile 内で見つかった、作成可能なクラスの登録を取り消します。 このオプションを省略すると、アセンブリ内の作成可能なクラスが Regasm.exe で登録されます。
/verbose 詳細出力モードを指定します。 /tlb オプションと共に指定した場合、タイプ ライブラリを生成する必要のある参照先アセンブリの一覧が表示されます。
/? または /help このツールのコマンド構文とオプションを表示します。

Note

Regasm.exe のコマンド行オプションでは大文字と小文字が区別されません。 オプションの一部を指定するだけで一意に識別できます。 たとえば、/n/nologo と等価であり、/t:outfile.tlb/tlb:outfile.tlb と等価です。

Remarks

/regfile オプションを使用すると、直接にレジストリを変更しなくても、レジストリ エントリを含む .reg ファイルを生成できます。 コンピューターのレジストリを更新するには、レジストリ エディター ツール (Regedit.exe) を使用して .reg ファイルをインポートします。 .reg ファイルには、ユーザー定義の登録機能で行われる可能性があるレジストリの更新は含まれません。 /regfile オプションは、マネージド クラスのレジストリ エントリだけを生成します。 このオプションは、TypeLibIDInterfaceID のエントリは生成しません。

/tlb オプションを指定すると、アセンブリ内で見つかった型を記述するタイプ ライブラリが Regasm.exe で生成および登録されます。 生成されたタイプ ライブラリは、現在の作業ディレクトリ、または出力ファイル用に指定されたディレクトリ内に格納されます。 他のアセンブリを参照するアセンブリについてタイプ ライブラリを生成すると、一度に複数のタイプ ライブラリが生成されることがあります。 タイプ ライブラリを使用して、Visual Studio などの開発用ツールに対して型情報を提供できます。 登録するアセンブリがタイプ ライブラリ インポーター (Tlbimp.exe) で生成されたアセンブリである場合には、 /tlb オプションを使用しないでください。 タイプ ライブラリからインポートされたアセンブリからは、タイプ ライブラリをエクスポートできません。 /tlb オプションを使用した場合の効果は、タイプ ライブラリ エクスポーター (Tlbexp.exe) と Regasm.exe を使用した場合と同じです。ただし、Tlbexp.exe では、生成されたタイプ ライブラリが登録されません。 /tlb オプションを使用してタイプ ライブラリを登録する場合、 /tlb オプションと /unregister オプションを使用してタイプ ライブラリの登録を解除できます。 この 2 つのオプションを使用すると、タイプ ライブラリとインターフェイス エントリの登録を解除でき、これによって、レジストリをかなり整理できます。

COM で使用するためにアセンブリを登録すると、Regasm.exe は、ローカル コンピューターのレジストリにエントリを追加します。 より具体的には、バージョンに依存するレジストリ キーを作成して、同じアセンブリの複数のバージョンが同じコンピューターで side-by-side 実行できるようにします。 アセンブリが初めて登録される場合は、そのアセンブリの最上位キーが 1 つ作成され、特定のバージョンに対する一意なサブキーが作成されます。 アセンブリの新しいバージョンを登録するたびに、Regasm.exe は、新しいバージョンに対するサブキーを作成します。

たとえば、COM で使用するために、マネージド コンポーネント myComp.dll のバージョン 1.0.0.0 を登録しているとします。 その後、myComp.dll バージョン 2.0.0.0 を登録します。 コンピューター上のすべての COM クライアント アプリケーションは myComp.dll バージョン 2.0.0.0 を使用しているため、myComponent.dll バージョン 1.0.0.0 を登録解除することにしました。 このレジストリ スキームでは、myComp.dll バージョン 1.0.0.0 のサブキーだけが削除されるため、バージョン 1.0.0.0 を登録解除できます。

Regasm.exe を使用してアセンブリを登録した後で、そのアセンブリをグローバル アセンブリ キャッシュ内に登録すると、どの COM クライアントからもアクティブにできます。 アセンブリをアクティブにするアプリケーションが 1 つだけの場合は、そのアプリケーションのディレクトリ内にアセンブリを格納できます。 グローバル アセンブリ キャッシュを使用する代わりに、/codebase オプションを使用することもできます。ただし、登録時のアセンブリの場所はグローバルに記録され、アセンブリが移動されるとアクティブ化は失敗します。 プローブによってアセンブリが見つからない場合、/codebase オプションを使用すると、読み込み元コンテキストでアセンブリが読み込まれます。これには、Assembly.LoadFrom に関するページで説明されている追加の考慮事項があります。

使用例

myTest.dll に含まれるすべてのパブリック クラスを登録するコマンドを次に示します。

regasm myTest.dll

ファイル myTest.reg を生成するコマンドを次に示します。このファイルには、必要なレジストリ エントリがすべて含まれます。 このコマンドを実行してもレジストリは更新されません。

regasm myTest.dll /regfile:myTest.reg

myTest.dll に含まれるすべてのパブリック クラスを登録し、タイプ ライブラリ myTest.tlb を生成および登録するコマンドを次に示します。このタイプ ライブラリには、myTest.dll で定義されたすべてのパブリック型の定義が含まれます。

regasm myTest.dll /tlb:myTest.tlb

関連項目