次の方法で共有


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 引数は、strong という名前のアセンブリにすることを強くお勧めします
/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と同等です。

解説

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

/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 オプションを使用することもできます。ただし、登録時のアセンブリの場所はグローバルに記録され、アセンブリが移動されるとアクティブ化は失敗します。 probingによってアセンブリが見つからない場合、/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

関連項目