アセンブリ マニフェスト
アセンブリ マニフェストは、サイド バイ サイド アセンブリを記述する XML ファイルです。 アセンブリ マニフェストでは、サイド バイ サイド アセンブリ、ファイル、およびアセンブリのリソースの名前とバージョン、および他のサイド バイ サイド アセンブリに対するアセンブリの依存について説明します。 サイド バイ サイド アセンブリのインストール、アクティブ化、実行を正しく行うには、アセンブリ マニフェストが常にシステム上のアセンブリに付属している必要があります。
XML スキーマの完全な一覧については、「 マニフェスト ファイル スキーマ」を参照してください。
アセンブリ マニフェストには、次の要素と属性があります。
要素 | 属性 | 必須 |
---|---|---|
アセンブリ | はい | |
manifestVersion | はい | |
noInheritable | いいえ | |
assemblyIdentity | はい | |
type | はい | |
name | はい | |
language | いいえ | |
processorArchitecture | いいえ | |
version | はい | |
publicKeyToken | いいえ | |
依存 関係 | いいえ | |
dependentAssembly | いいえ | |
file | いいえ | |
name | はい | |
hashalg | いいえ | |
hash | いいえ | |
comClass | いいえ | |
description | いいえ | |
clsid | はい | |
threadingModel | いいえ | |
tlbid | いいえ | |
progid | いいえ | |
miscStatus | いいえ | |
miscStatusIcon | いいえ | |
miscStatusContent | いいえ | |
miscStatusDocPrint | いいえ | |
miscStatusThumbnail | いいえ | |
Typelib | いいえ | |
tlbid | はい | |
version | はい | |
helpdir | はい | |
resourceid | いいえ | |
flags | いいえ | |
comInterfaceExternalProxyStub | いいえ | |
iid | はい | |
baseInterface | いいえ | |
numMethods | いいえ | |
name | いいえ | |
tlbid | いいえ | |
proxyStubClsid32 | いいえ | |
comInterfaceProxyStub | いいえ | |
iid | はい | |
name | はい | |
tlbid | いいえ | |
baseInterface | いいえ | |
numMethods | いいえ | |
proxyStubClsid32 | いいえ | |
threadingModel | いいえ | |
windowClass | いいえ | |
バージョン | いいえ |
ファイルの場所
アセンブリ マニフェストは、次の 3 つの場所にインストールできます。
- 共有アセンブリに付随するマニフェストとして、アセンブリ マニフェストはサイド バイ サイド アセンブリ キャッシュに別のファイルとしてインストールする必要があります。 これは通常、Windows ディレクトリ内の WinSxS フォルダーです。
- プライベート アセンブリに付随するマニフェストとして、アセンブリ マニフェストはアプリケーションのディレクトリ構造にインストールする必要があります。 これは通常、アプリケーションの実行可能ファイルと同じフォルダー内の別のファイルです。
- DLL 内のリソースとして、アセンブリは DLL のプライベート使用に使用できます。 アセンブリ マニフェストを EXE のリソースとして含めることはできません。 EXE ファイルには、リソースとして アプリケーション マニフェスト を含めることができます。
ファイル名の構文
アセンブリ マニフェストの名前は、有効なファイル名の後に 続く 任意の .manifest
です。
たとえば、myassembly を参照するアセンブリ マニフェストでは、次のファイル名構文が使用されます。 myassembly.<resource ID>.manifest
アセンブリ マニフェストが別の <resource ID>
ファイルとしてインストールされている場合、またはリソース ID が 1 の場合は、フィールドを省略できます。
注意
プライベート アセンブリをサイド バイ サイドで検索する方法のため、DLL をプライベート アセンブリとしてパッケージ化する場合は、次の名前付け制限が適用されます。 これを行うための推奨される方法は、アセンブリ マニフェストをリソースとして DLL に配置することです。 この場合、リソース ID は 1 に等しく、プライベート アセンブリの名前は DLL の名前と同じにすることができます。 たとえば、DLL の名前がMicrosoft.Windows.mysample.dll場合、マニフェストの assemblyIdentity 要素で使用される name 属性の値も Microsoft.Windows.mysample になります。 別の方法として、アセンブリ マニフェストを別のファイルに配置します。 この場合、アセンブリとそのマニフェストの名前は DLL の名前と異なる必要があります。 たとえば、Microsoft.Windows.mysampleAsm、Microsoft.Windows.mysampleAsm.manifest、Microsoft.Windows.Mysample.dll。 プライベート アセンブリをサイド バイ サイドで検索する方法の詳細については、「 アセンブリ検索シーケンス」を参照してください。
要素
要素と属性の名前では、大文字と小文字が区別されます。 要素と属性の値は、type 属性の値を除き、大文字と小文字は区別されません。
-
アセンブリ
-
コンテナー要素。 最初のサブ要素は assemblyIdentity または noInheritable 要素である必要があります。 アセンブリ マニフェストは、 assemblyIdentity によって識別されるサイド バイ サイド アセンブリを一意に記述します。 必須。
assembly 要素は、名前空間 "urn:schemas-microsoft-com:asm.v1" に含まれている必要があります。 アセンブリの子要素も、継承またはタグ付けによって、この名前空間内に存在する必要があります。
assembly 要素には、次の属性があります。
属性 説明 manifestVersion manifestVersion 属性は 1.0 に設定する必要があります。 -
noInheritable
-
アセンブリ マニフェストにこの要素を含め、アセンブリが アクティブ化コンテキスト とそのオブジェクトを管理することを示します。 noInheritable 要素は、アセンブリ要素のサブ要素である必要があります。 assemblyIdentity 要素は、noInheritable 要素の後に含める必要があります。 noInherit 要素を含むアプリケーション マニフェストでアセンブリを使用する場合は、アセンブリ マニフェストで noInheritable 要素が必要です。 アプリケーション マニフェスト 内の noInheritable 要素には影響はありません。 noInheritable 要素には子要素がありません。
-
assemblyIdentity
-
サイド バイ サイド アセンブリについて説明し、一意に識別します。
assembly 要素の最初のサブ要素として、assemblyIdentity は、このアセンブリ マニフェストを所有するサイド バイ サイド アセンブリを記述し、一意に識別します。 これは、アセンブリ マニフェストの DEF コンテキスト assemblyIdentity と呼ばれます。
dependentAssembly 要素の最初のサブ要素として、assemblyIdentity は、DEF コンテキスト assemblyIdentity によって使用されるサイド バイ サイド アセンブリを記述し、一意に識別します。 これは、アセンブリ マニフェストの REF コンテキスト assemblyIdentity と呼ばれます。 DEF コンテキスト アセンブリでは、REF コンテキスト アセンブリが正しく動作する必要があります。 すべての REF コンテキスト assemblyIdentity は 、参照先アセンブリの独自のアセンブリ マニフェスト内の対応する DEF コンテキスト assemblyIdentity と完全に一致する必要があることに注意してください。
この要素にはサブ要素がありません。 assemblyIdentity 要素には、次の属性があります。
属性 説明 type アセンブリの種類を指定します。 値は win32 で、小文字にする必要があります。 必須。 name アセンブリに一意の名前を付けます。 アセンブリ名には、次の形式を使用します: Organization.Division.Name。 たとえば、Microsoft.Windows.mysampleAsm などです。 必須。 個別のマニフェスト ファイルを持つプライベート アセンブリとしてパッケージ化された DLL の場合、アセンブリの名前は DLL とマニフェストの名前とは異なる必要があることに注意してください。 language アセンブリの言語を識別します。 省略可能。 アセンブリが言語固有の場合は、DHTML 言語コードを指定します。 世界中で使用することを目的としたアセンブリ マニフェストの DEF コンテキスト assemblyIdentity (言語に依存しない) では、言語属性を省略します。
REF コンテキスト アセンブリで世界中で使用することを目的としたアセンブリ マニフェストの ID (言語に依存しない) では、language の値を "*" に設定します。processorArchitecture プロセッサを指定します。 有効な値は、32 ビット Windows の場合は x86、64 ビット Windows の場合は ia64 です。 省略可能。 version アセンブリのバージョンを指定します。 4 部構成のバージョン形式を使用します: mmmmm.nnnnnnn.ooooo.ppppp。 期間で区切られた各部分は、0 から 65535 までの範囲で指定できます。 詳細については、「 アセンブリ バージョン」を参照してください。 必須。 publicKeyToken アセンブリが署名されている公開キーの SHA-1 ハッシュの最後の 8 バイトを表す 16 文字の 16 進文字列。 カタログの署名に使用される公開キーは、2048 ビット以上である必要があります。 共有のサイド バイ サイド アセンブリに必要です。 -
依存 関係
-
少なくとも 1 つの dependentAssembly を含むコンテナー要素。 最初のサブ要素は dependentAssembly 要素である必要があります。 依存関係には属性がありません。 省略可能。
-
dependentAssembly
-
最初のサブ要素は、このアセンブリ マニフェストを所有するサイド バイ サイド アセンブリによって使用されるサイド バイ サイド アセンブリを記述し、一意に識別する assemblyIdentity 要素である必要があります。 すべての dependentAssembly は、 1 つの 依存関係内に存在する必要があります。 省略可能。
-
ファイル
-
サイド バイ サイド アセンブリで使用されるファイルを格納します。 comClass、typelib、windowClass、comInterfaceProxyStub サブ要素が含まれます。 省略可能。
file 要素には、次の属性があります。
属性 説明 name ファイルの名前 (例: Conctl32.dll)。 hashalg ファイルのハッシュを作成するために使用されるアルゴリズム。 この値は SHA1 である必要があります。 hash 名前で参照されるファイルのハッシュ。 ハッシュ アルゴリズムに応じた長さの 16 進文字列。 -
comClass
-
ファイル要素のサブ要素。 省略可能。
comClass 要素には、次の属性があります。
属性 説明 description クラス名。 clsid クラスを一意に識別する GUID。 必須。 値は有効な GUID の形式である必要があります。 threadingModel インプロセス COM クラスによって使用されるスレッド モデル。 このプロパティが null の場合、スレッド モデルは使用されません。 コンポーネントはクライアントのメイン スレッドで作成され、他のスレッドからの呼び出しはこのスレッドにマーシャリングされます。 省略可能。 有効な値は、"Apartment"、"Free"、"Both"、および "Neutral" です。 tlbid COM コンポーネントのタイプ ライブラリの GUID。 値は GUID の形式である必要があります。 省略可能。 progid COM コンポーネントに関連付けられている、バージョン依存のプログラム識別子。 ProgID の形式はベンダー>です<。<コンポーネント>。<version>. miscStatus アセンブリ マニフェスト内の重複は、MiscStatus レジストリ キーによって提供される情報です。 miscStatusIcon、miscStatusContent、miscStatusDocprint、または miscStatusThumbnail 属性の値が見つからない場合は、miscStatus に一覧表示されている対応する既定値が不足している属性に使用されます。 値には、次の表の属性値のコンマ区切りのリストを指定できます。 COM クラスが Miscstatus レジストリ キー値を必要とする OCX クラスである場合は、この属性を使用できます。 miscStatusIcon DVASPECT_ICON によって提供される情報を、アセンブリ マニフェスト内に複製します。 これにより、オブジェクトのアイコンを提供できます。 値には、次の表の属性値のコンマ区切りのリストを指定できます。 COM クラスが Miscstatus レジストリ キー値を必要とする OCX クラスである場合は、この属性を使用できます。 miscStatusContent DVASPECT_CONTENT によって提供される情報を、アセンブリ マニフェスト内に複製します。 これにより、画面またはプリンターに表示できる複合ドキュメントを提供できます。 値には、次の表の属性値のコンマ区切りのリストを指定できます。 COM クラスが Miscstatus レジストリ キー値を必要とする OCX クラスである場合は、この属性を使用できます。 miscStatusDocprint DVASPECT_DOCPRINT によって提供される情報を、アセンブリ マニフェスト内に複製します。 プリンターに印刷されるかのように、画面上に表示可能なオブジェクト表現を提供できます。 値には、次の表の属性値のコンマ区切りのリストを指定できます。 COM クラスが Miscstatus レジストリ キー値を必要とする OCX クラスである場合は、この属性を使用できます。 miscStatusThumbnail DVASPECT_THUMBNAIL によって提供される情報を、アセンブリ マニフェスト内に複製します。 閲覧ツールで表示できるオブジェクトのサムネイルを提供できます。 値には、次の表の属性値のコンマ区切りのリストを指定できます。 COM クラスが Miscstatus レジストリ キー値を必要とする OCX クラスである場合は、この属性を使用できます。 comClass 要素には<、バージョンに依存する progid を一覧表示する子として progid>... 要素を含めることができます。
次の例は、ファイル要素に含まれる comClass 要素を示しています。
<file name="sampleu.dll"> <comClass description="Font Property Page" clsid="{0BE35200-8F91-11CE-9DE3-00AA004BB851}" threadingModel = "Both" tlbid = "{44EC0535-400F-11D0-9DCD-00A0C90391D3}"/> <comClass description="Color Property Page" clsid="{0BE35201-8F91-11CE-9DE3-00AA004BB851}" progid="ABC.Registrar"/> </file>
COM クラスが OCX クラスであり、MiscStatus レジストリ サブキーでオブジェクトの作成方法と表示方法を指定する必要がある場合は、アセンブリ マニフェストでこの情報を複製してオブジェクトを有効にすることができます。 comClass 要素の miscStatus、miscStatusIcon、miscStatusContent、miscStatusDocprint、miscStatusThumbnail 属性を使用して、オブジェクトの特性を指定します。 これらの属性を、次の表の属性値のコンマ区切りのリストに設定します。 これらの属性は、DVASPECT 列挙体によって提供される情報を複製します。 miscStatusIcon、miscStatusContent、miscStatusDocprint、または miscStatusThumbnail に値が見つからない場合は、miscStatus で指定された既定値が使用されます。 次の表の属性値を使用します。 これらは 、OLEMISC 列挙体のビット フラグに対応します。
属性値 OLEMISC 定数 recomposeonresize OLEMISC_RECOMPOSEONRESIZE onlyiconic OLEMISC_ONLYICONIC insertnotreplace OLEMISC_INSERTNOTREPLACE static OLEMISC_STATIC cantlinkinside OLEMISC_CANTLINKINSIDE canlinkbyole1 OLEMISC_CANLINKBYOLE1 islinkobject OLEMISC_ISLINKOBJECT insideout OLEMISC_INSIDEOUT activatewhenvisible OLEMISC_ACTIVATEWHENVISIBLE renderingisdeviceindependent OLEMISC_RENDERINGISDEVICEINDEPENDENT invisibleatruntime OLEMISC_INVISIBLEATRUNTIME alwaysrun OLEMISC_ALWAYSRUN actslikebutton OLEMISC_ACTSLIKEBUTTON actslikelabel OLEMISC_ACTSLIKELABEL nouiactivate OLEMISC_NOUIACTIVATE alignable OLEMISC_ALIGNABLE simpleframe OLEMISC_SIMPLEFRAME setclientsitefirst OLEMISC_SETCLIENTSITEFIRST Imemode TOLEMISC_IMEMODE ignoreativatewhenvisible OLEMISC_IGNOREACTIVATEWHENVISIBLE wantstomenumerge OLEMISC_WANTSTOMENUMERGE supportsmultilevelundo OLEMISC_SUPPORTSMULTILEVELUNDO -
Typelib
-
ファイル要素のサブ要素。 省略可能。
typelib 要素には、次の表に示す属性があります。
属性 説明 tlbid タイプ ライブラリの一意の ID。 必須。 version タイプ ライブラリの 2 部構成のバージョン番号。 マイナー バージョン番号のみが増える場合は、以前のタイプ ライブラリのすべての機能が互換性のある方法でサポートされます。 メジャー バージョン番号が変更された場合は、タイプ ライブラリに対してコンパイルされたコードを再コンパイルする必要があります。 タイプ ライブラリのバージョン番号は、アプリケーションのバージョン番号と異なる場合があります。 必須。 helpdir タイプ ライブラリ内の型のヘルプ ファイルがあるディレクトリ。 アプリケーションが複数の言語のタイプ ライブラリをサポートしている場合、ライブラリはヘルプ ファイル ディレクトリ内の異なるファイル名を参照する可能性があります。 値がない場合は、"" を指定します。 必須。 resourceid ロケール識別子 (LCID) の 16 進文字列表現。 1 ~ 4 桁の 16 進数で、プレフィックスが 0x で、先頭に 0 が付いていません。 LCID には、中立の副言語識別子が含まれている場合があります。 詳細については、「 ロケール識別子」を参照してください。 省略可能。 flags このタイプ ライブラリのタイプ ライブラリ フラグの文字列表現。 具体的には、これは "RESTRICTED"、"CONTROL"、"HIDDEN"、"HASDISKIMAGE" のいずれかである必要があります。 これらは LIBFLAGS 列挙の値であり、ICreateTypeLib::SetLibFlags メソッドの uLibFlags パラメーターで指定されたフラグと同じです。 省略可能。 次の例は、file 要素に含まれる typelib 要素を示しています。
<file name="sampleu.dll"> <typelib tlbid="{44EC0535-400F-11D0-9DCD-00A0C90391D3}" version="1.0" helpdir=""/> </file>
-
comInterfaceExternalProxyStub
-
comInterfaceExternalProxyStub はアセンブリ要素のサブ要素であり、オートメーション インターフェイスに使用されます。 たとえば、 IDispatch とその派生インターフェイスなどです。 省略可能。
既定のプロキシ スタブ実装は、 IDispatch から派生したインターフェイスなど、ほとんどのオートメーション インターフェイスに適しています。 インターフェイス プロキシ スタブとその他のすべての外部プロキシ スタブ インターフェイス実装は、 comInterfaceExternalProxyStub に一覧表示されている必要があります。 comInterfaceExternalProxyStub 要素には、次の表に示す属性があります。
属性 説明 iid プロキシが宣言されているインターフェイスの IID。 必須。 値は"{iid}" の形式である必要があります。 baseInterface iid 属性によって記述されたものの派生元となるインターフェイスの IID 。 この属性は省略可能です。 値は"{iid}" の形式である必要があります。 numMethods そのインターフェイスによって実装されているメソッドの数。 この属性は省略可能です。 値は、"n" の形式である必要があります。 name コードに表示されるインターフェイスの名前。 たとえば、"IViewObject" などです。 これは説明的な文字列にすることはできません。 この属性は省略可能です。 値は、"name" という形式にする必要があります。 tlbid iid 属性で指定されたインターフェイスの説明を含むタイプ ライブラリ。 この属性は省略可能です。 値は、"{tlbid}" という形式にする必要があります。 proxyStubClsid32 IID を、32 ビット プロキシ DLL 内の CLSID にマップします。 次の例は、 comInterfaceExternalProxyStub 要素を 示しています。
<comInterfaceExternalProxyStub name="IAxWinAmbientDispatch" iid="{B6EA2051-048A-11D1-82B9-00C04FB9942E}" numMethods="35" baseInterface="{00000000-0000-0000-C000-000000000046}"/>
-
comInterfaceProxyStub
-
ファイル要素のサブ要素。 省略可能。
アセンブリ内のファイルがプロキシ スタブを実装する場合、対応するファイル タグには 、comInterfaceProxyStub 要素と同じ属性を持つ comInterfaceProxyStub サブ要素を含める必要があります。 コンポーネントの comInterfaceProxyStub 依存関係の一部を省略すると、プロセスとスレッド間のインターフェイスのマーシャリングが期待どおりに機能しない場合があります。
comInterfaceProxyStub 要素には、次の属性があります。
属性 説明 iid 。プロキシが宣言されているインターフェイスの IID。 必須。 値は"{iid}" の形式である必要があります。 name コードに表示されるインターフェイスの名前。 たとえば、"IViewObject" とします。 これは説明的な文字列にすることはできません。 この属性は省略可能です。 値は"name" の形式にする必要があります。 tlbid iid 属性で指定されたインターフェイスの説明を含むタイプ ライブラリ。 この属性は省略可能です。 値は"{tlbid}" の形式にする必要があります。 baseInterface iid 属性によって記述されたものの派生元となるインターフェイスの IID 。 この属性は省略可能です。 値は"{iid}" の形式である必要があります。 numMethods そのインターフェイスによって実装されているメソッドの数。 この属性は省略可能です。 値は"n" の形式にする必要があります。 proxyStubClsid32 IID を、32 ビット プロキシ DLL 内の CLSID にマップします。 threadingModel インプロセス COM クラスによって使用されるスレッド モデル。 このプロパティが null の場合、スレッド モデルは使用されません。 コンポーネントはクライアントのメイン スレッドで作成され、他のスレッドからの呼び出しはこのスレッドにマーシャリングされます。 省略可能。 有効な値は、"Apartment"、"Free"、"Both"、および "Neutral" です。 -
windowclass
-
バージョン管理する Windows クラスの名前。 windowclass 要素には、次の属性があります。
属性 説明 バージョン この属性は、登録で使用される内部ウィンドウ クラス名に、ウィンドウ クラスを含むアセンブリのバージョンを含めるかどうかを制御します。 この属性の値には、"yes" または "no" を指定できます。 既定値は "yes" です。 値 "no" は、同じウィンドウ クラスが side-by-side コンポーネントと同等の非 side-by-side コンポーネントによって定義され、それらを同じウィンドウ クラスとして扱う場合にのみ使用する必要があります。 ウィンドウ クラスの登録に関する通常の規則では、バージョン管理されていないため、ウィンドウ クラスを登録する最初のコンポーネントのみが登録できることに注意してください。 次の例は、file 要素に含まれる windowclass 要素を示しています。
<file name="comctl32.dll"> <windowClass versioned="no">ToolbarWindow32</windowClass> </file>
例
アセンブリ マニフェストの例を次に示します。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1"
manifestVersion="1.0">
<assemblyIdentity type="win32" name="Microsoft.Tools.SampleAssembly" version="6.0.0.0" processorArchitecture="x86" publicKeyToken="0000000000000000"/>
<file name="sampleu.dll" hash="3eab067f82504bf271ed38112a4ccdf46094eb5a" hashalg="SHA1">
<comClass description="Font Property Page" clsid="{0BE35200-8F91-11CE-9DE3-00AA004BB851}"/>
<comClass description="Color Property Page" clsid="{0BE35201-8F91-11CE-9DE3-00AA004BB851}"/>
<comClass description="Picture Property Page" clsid="{0BE35202-8F91-11CE-9DE3-00AA004BB851}"/>
</file>
<file name="bar.dll" hash="ac72753e5bb20446d88a48c8f0aaae769a962338" hashalg="SHA1"/>
<file name="foo.dll" hash="a7312a1f6cfb46433001e0540458de60adcd5ec5" hashalg="SHA1">
<comClass description="Registrar Class" clsid="{44EC053A-400F-11D0-9DCD-00A0C90391D3}" progid="ATL.Registrar"/>
<comInterfaceProxyStub iid="{B6EA2051-048A-11D1-82B9-00C04FB9942E}" name=" IAxWinAmbientDispatch " tlbid="{34EC053A-400F-11D0-9DCD-00A0C90391D3}"/>
<typelib tlbid="{44EC0535-400F-11D0-9DCD-00A0C90391D3}" version="1.0" helpdir=""/>
</file>
<file name="sampledll.dll" hash="ba62960ceb15073d2598379307aad84f3a73dfcb" hashalg="SHA1"/>
<windowClass>ToolbarWindow32</windowClass>
<windowClass>ComboBoxEx32</windowClass>
<windowClass>sample_trackbar32</windowClass>
<windowClass>sample_updown32</windowClass>
</assembly>