方法 : 登録を必要としないアクティベーション用の .NET ベースのコンポーネントを構成する
更新 : 2007 年 11 月
.NET ベースのコンポーネントの登録を必要としないアクティベーションは、COM コンポーネントの場合よりも少しだけ複雑です。セットアップには 2 つのマニフェストが必要です。
COM アプリケーションには、マネージ コンポーネントを識別するための Win32 スタイルのアプリケーション マニフェストが必要です。
.NET ベースのコンポーネントには、実行時に必要なアクティベーション情報のコンポーネント マニフェストが必要です。
このトピックでは、アプリケーション マニフェストをアプリケーションに関連付ける方法、コンポーネント マニフェストをコンポーネントに関連付ける方法、およびコンポーネント マニフェストをアセンブリに埋め込む方法について説明します。
アプリケーション マニフェストを作成するには
XML エディタを使用して、1 つ以上のマネージ コンポーネントと相互運用する COM アプリケーションによって所有されるアプリケーション マニフェストを作成または編集します。
ファイルの先頭に次の標準ヘッダーを挿入します。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
マニフェストの要素とその属性については、MSDN Library で「Application Manifests Reference」を検索してください。
マニフェストの所有者を指定します。myComApp バージョン 1 がマニフェスト ファイルを所有する例を次に示します。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity type="win32" name="myOrganization.myDivision.myComApp" version="1.0.0.0" processorArchitecture="x86" />
依存アセンブリを指定します。myComApp が myManagedComp に依存する例を次に示します。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity type="win32" name="myOrganization.myDivision.myComApp" version="1.0.0.0" processorArchitecture="x86" publicKeyToken="8275b28176rcbbef" /> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="myOrganization.myDivision.myManagedComp" version="6.0.0.0" processorArchitecture="X86" publicKeyToken="8275b28176rcbbef" language="*" /> </dependentAssembly> </dependency> </assembly>
マニフェスト ファイルに名前を付けて保存します。アプリケーション マニフェストの名前は、アセンブリ実行可能ファイルの名前に拡張子 .manifest が付いたものです。たとえば、myComApp.exe のアプリケーション マニフェスト ファイル名は myComApp.exe.manifest です。
アプリケーション マニフェストは、COM アプリケーションと同じディレクトリにインストールできます。また、アプリケーションの .exe ファイルにリソースとして追加することもできます。詳細については、MSDN Library で「Side-by-side Assemblies」を検索してください。
コンポーネント マニフェストを作成するには
XML エディタを使用して、マネージ アセンブリを記述するコンポーネント マニフェストを作成します。
ファイルの先頭に次の標準ヘッダーを挿入します。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
ファイルの所有者を指定します。アプリケーション マニフェスト ファイル内の <dependentAssembly> 要素の <assemblyIdentity> 要素は、コンポーネント マニフェスト内の要素と一致している必要があります。myManagedComp バージョン 1.2.3.4 がマニフェスト ファイルを所有する例を次に示します。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity name="myOrganization.myDivision.myManagedComp" version="1.2.3.4" /> publicKeyToken="8275b28176rcbbef"
アセンブリ内の各クラスを指定します。マネージ アセンブリ内の各クラスを一意に識別するには <clrClass> 要素を使用します。この要素は、<assembly> 要素のサブ要素であり、次の表に示す属性を持っています。
属性
説明
必須
clsid
アクティブにするクラスを指定する識別子。
○
description
ユーザーにコンポーネントを説明する文字列。既定では文字列は空です。
×
name
マネージ クラスを表す文字列。
○
progid
遅延バインディングによるアクティベーションで使用される識別子。
×
threadingModel
COM スレッド モデル。"Both" が既定値です。
×
runtimeVersion
この属性は無視されます。ランタイムが読み込まれていない場合は、クラスをアクティブにする前に最上位バージョンが読み込まれます。ランタイムが読み込まれている場合は、現在読み込まれているバージョンが使用されます。
×
tlbid
クラスに関する型情報を格納するタイプ ライブラリの識別子。
×
属性タグはすべて大文字と小文字が区別されます。OLE/COM オブジェクト ビューア (Oleview.exe) で、エクスポートされたアセンブリのタイプ ライブラリを表示することによって、CLSID、ProgID、スレッド モデル、およびランタイムのバージョンを取得できます。
2 つのメソッドを持つ単一のクラスを識別するコンポーネント マニフェストを次に示します。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity name="myOrganization.myDivision.myManagedComp" version="1.2.3.4" /> publicKeyToken="8275b28176rcbbef" <clrClass clsid="{65722BE6-3449-4628-ABD3-74B6864F9739}" progid="myManagedComp.testClass1" threadingModel="Both" name="myManagedComp.testClass1" runtimeVersion="v1.0.3705"> </clrClass> <clrClass clsid="{367221D6-3559-3328-ABD3-45B6825F9732}" progid="myManagedComp.testClass2" threadingModel="Both" name="myManagedComp.testClass2" runtimeVersion="v1.0.3705"> </clrClass> <file name="MyManagedComp.dll"> </file> </assembly>
マニフェスト ファイルに名前を付けて保存します。コンポーネント マニフェストの名前は、アセンブリ ライブラリの名前に拡張子 .manifest が付いたものです。たとえば、myManagedComp.dll の場合は、myManagedComp.manifest になります。
コンポーネント マニフェストはリソースとしてアセンブリに埋め込む必要があります。
コンポーネント マニフェストをマネージ アセンブリに埋め込むには
次のステートメントを含むリソース スクリプトを作成します。
RT_MANIFEST 1 myManagedComp.manifest
このステートメントで、myManagedComp.manifest は埋め込むコンポーネント マニフェストの名前です。この例では、スクリプト ファイル名は myresource.rc です。
Microsoft Windows リソース コンパイラ (Rc.exe) を使用してスクリプトをコンパイルします。コマンド プロンプトに次のコマンドを入力します。
rc myresource.rc
Rc.exe は myresource.res リソース ファイルを生成します。
もう一度アセンブリのソース ファイルをコンパイルし、/win32res オプションを使用してリソース ファイルを指定します。
/win32res:myresource.res
ここでも、myresource.res は埋め込むリソースを含むリソース ファイルの名前です。
参照
概念
登録を必要としないアクティベーション用の COM コンポーネントの構成