RegisterAssembly タスク
指定されたアセンブリに含まれるメタデータを読み込み、必要なエントリをレジストリに追加します。このため、COM クライアントは特別な処理を必要とすることなく .NET Framework クラスを作成できます。 このタスクの動作は、完全に同じではありませんが、Regasm.exe (アセンブリ登録ツール) の動作に似ています。
パラメーター
RegisterAssembly タスクのパラメーターの説明を次の表に示します。
パラメーター |
説明 |
---|---|
Assemblies |
必須の ITaskItem[] 型のパラメーターです。 COM に登録するアセンブリを指定します。 |
AssemblyListFile |
省略可能な ITaskItem 型のパラメーターです。 RegisterAssembly タスクと UnregisterAssembly タスクの間の状態に関する情報が含まれます。 これによって、RegisterAssembly タスクで登録に失敗したアセンブリの登録を UnregisterAssembly タスクが解除しないようにできます。 |
CreateCodeBase |
省略可能な Boolean 型のパラメーターです。 true に設定すると、レジストリに Codebase エントリが作成されます。Codebase エントリは、グローバル アセンブリ キャッシュにインストールされていないアセンブリのファイル パスを指定するものです。 登録しようとしているアセンブリを、後でグローバル アセンブリ キャッシュにインストールする場合は、このオプションを指定する必要はありません。 |
TypeLibFiles |
省略可能な ITaskItem[] 型の出力パラメーターです。 指定したアセンブリから生成するタイプ ライブラリを指定します。 生成されるタイプ ライブラリには、アセンブリ内で定義されているアクセス可能なタイプが格納されます。 タイプ ライブラリは、以下のいずれかの条件を満たす場合にだけ作成されます。
渡されたアセンブリよりもタイプ ライブラリの方が新しい場合、新しいタイプ ライブラリは作成されませんが、アセンブリの登録は行われます。 このパラメーターを指定する場合には、Assemblies パラメーターに指定したアイテムと同じ数のアイテムを指定する必要があります。数が異なると、タスクは失敗します。 指定しなかった場合には、既定でアセンブリの名前が使用され、アイテムの拡張子は .tlb に変更されます。 |
解説
Framework64/<バージョン>/RegisterAssemblyTask では、32 ビット コンポーネントとして登録されている COM オブジェクトのライブラリは解決できません。 Framework/<バージョン>/RegisterAssemblyTask では、64 ビット コンポーネントとして登録されている COM オブジェクトのライブラリは解決できません。
たとえば、64 ビット コンピューターで ClassLibrary1 という COM オブジェクトのライブラリを 32 ビット コンポーネントとして登録し、Visual Studio を実行してターゲットを x64 に変更した場合、ビルドは失敗し、次のエラーが表示されます。
ClassLibrary1.dll is not a valid assembly
上記のパラメーター以外に、このタスクは TaskExtension クラスからパラメーターを継承します。このクラス自体は、Task クラスから継承されます。 これらの追加のパラメーターの一覧とその説明については、「TaskExtension 基本クラス」を参照してください。
使用例
RegisterAssembly タスクを使用して、MyAssemblies アイテム コレクションで指定されたアセンブリを登録する例を次に示します。
<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<MyAssemblies Include="MyAssembly.dll" />
<ItemGroup>
<Target Name="RegisterAssemblies">
<RegisterAssembly
Assemblies="@(MyAssemblies)" >
</Target>
</Project>