アセンブリ マニフェストは、サイド バイ サイド アセンブリを記述する XML ファイルです。 アセンブリ マニフェストでは、サイド バイ サイド アセンブリ、ファイル、およびアセンブリのリソースの名前とバージョン、および他のサイド バイ サイド アセンブリでのアセンブリの依存関係について説明します。 サイド バイ サイド アセンブリの正しいインストール、アクティブ化、実行には、アセンブリ マニフェストが常にシステム上のアセンブリに付属している必要があります。
XML スキーマの完全な一覧については、「マニフェスト ファイル スキーマ 」を参照してください。
アセンブリ マニフェストには、次の要素と属性があります。
| 要素 | 属性 | 必須 |
|---|---|---|
| アセンブリ を する | はい | |
| manifestVersion を する | はい | |
| noInheritable を する | いいえ | |
| assemblyIdentity | はい | |
| 型 | はい | |
| 名の | はい | |
| 言語 | いいえ | |
| processorArchitecture | いいえ | |
| バージョンの | はい | |
| publicKeyToken を する | いいえ | |
| 依存関係 の | いいえ | |
| dependentAssembly を する | いいえ | |
| ファイルの | いいえ | |
| 名の | はい | |
| hashalg を する | いいえ | |
| ハッシュ の | いいえ | |
| comClass を する | いいえ | |
| 説明 | いいえ | |
| clsid を する | はい | |
| threadingModel | いいえ | |
| tlbid を する | いいえ | |
| progid を する | いいえ | |
| miscStatus を する | いいえ | |
| miscStatusIcon を する | いいえ | |
| miscStatusContent を する | いいえ | |
| miscStatusDocPrint を する | いいえ | |
| miscStatusThumbnail を する | いいえ | |
| typelib を する | いいえ | |
| tlbid を する | はい | |
| バージョンの | はい | |
| helpdir を する | はい | |
| resourceid を する | いいえ | |
| フラグの | いいえ | |
| comInterfaceExternalProxyStub | いいえ | |
| iid を する | はい | |
| baseInterface を する | いいえ | |
| numMethods の | いいえ | |
| 名の | いいえ | |
| tlbid を する | いいえ | |
| proxyStubClsid32 を する | いいえ | |
| comInterfaceProxyStub を する | いいえ | |
| iid を する | はい | |
| 名の | はい | |
| tlbid を する | いいえ | |
| baseInterface を する | いいえ | |
| numMethods の | いいえ | |
| proxyStubClsid32 を する | いいえ | |
| threadingModel | いいえ | |
| windowClass | いいえ | |
| バージョン管理された を する | いいえ |
ファイルの場所
アセンブリ マニフェストは、次の 3 つの場所にインストールできます。
- 共有アセンブリに付随するマニフェストとして、アセンブリ マニフェストはサイド バイ サイド アセンブリ キャッシュに別のファイルとしてインストールする必要があります。 これは通常、Windows ディレクトリ内の WinSxS フォルダーです。
- プライベート アセンブリ に付随するマニフェストとして、アセンブリ マニフェストはアプリケーションのディレクトリ構造にインストールする必要があります。 これは通常、アプリケーションの実行可能ファイルと同じフォルダー内の別のファイルです。
- DLL 内のリソースとして、アセンブリは DLL のプライベート使用に使用できます。 アセンブリ マニフェストを EXE のリソースとして含めることはできません。 EXE ファイルには、リソースとして アプリケーション マニフェストが含まれる場合があります。
ファイル名の構文
アセンブリ マニフェストの名前は、有効なファイル名の後に .manifestが続きます。
たとえば、myassembly を参照するアセンブリ マニフェストでは、次のファイル名構文を使用します:myassembly.<resource ID>.manifest。
アセンブリ マニフェストが別のファイルとしてインストールされている場合、またはリソース ID が 1 の場合は、<resource ID> フィールドを省略できます。
手記
プライベート アセンブリをサイド バイ サイドで検索するため、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などです。 プライベート アセンブリをサイド バイ サイドで検索する方法の詳細については、「アセンブリ検索シーケンス」を参照してください。
元素
要素と属性の名前では、大文字と小文字が区別されます。 型属性の値を除き、要素と属性の値では大文字と小文字が区別されません。
-
アセンブリを する
-
コンテナー要素。 最初のサブ要素は、assemblyIdentity であるか、noInheritable 要素 する必要があります。 アセンブリ マニフェストは、assemblyIdentityによって識別されるサイド バイ サイド アセンブリを一意に記述します。 必須。
アセンブリ要素は、名前空間 "urn:schemas-microsoft-com:asm.v1" 内にある必要があります。 アセンブリの子要素も、継承またはタグ付けによって、この名前空間に存在する必要があります。
アセンブリ 要素には、次の属性があります。
属性 形容 manifestVersion を する manifestVersion 属性は 1.0 に設定する必要があります。 -
noInheritableの
-
アセンブリ マニフェストにこの要素を含め、アセンブリが アクティブ化コンテキスト とそのオブジェクトを管理することを示します。 noInheritable 要素は、アセンブリ 要素のサブ要素である必要があります。 assemblyIdentity 要素は、noInheritable 要素 後に含める必要があります。 noInherit 要素を含む アプリケーション マニフェスト でアセンブリが使用されている場合は、アセンブリ マニフェストで noInheritable 要素が必要です。 アプリケーション マニフェスト内の noInheritable 要素は効果がありません。 noInheritable 要素には子要素がありません。
-
assemblyIdentityを する
-
サイド バイ サイド アセンブリを記述し、一意に識別します。
アセンブリ 要素の最初のサブ要素として、assemblyIdentity は、このアセンブリ マニフェストを所有するサイド バイ サイド アセンブリを記述し、一意に識別します。 これは、アセンブリ マニフェストの def コンテキスト assemblyIdentity と呼ばれます。
dependentAssembly 要素の最初のサブ要素として、assemblyIdentity は、DEF コンテキスト assemblyIdentityで使用される side-by-side アセンブリを記述し、一意に識別します。 これは、アセンブリ マニフェストの assemblyIdentity REF コンテキストと呼ばれます。 DEF コンテキスト アセンブリでは、REF コンテキスト アセンブリが正しく動作する必要があります。 すべての REF コンテキスト assemblyIdentity は、参照されるアセンブリのアセンブリ マニフェスト内の対応する DEF コンテキスト assemblyIdentity と完全に一致する必要があることに注意してください。
この要素にはサブ要素がありません。 assemblyIdentity 要素には、次の属性があります。
-
依存関係の
-
少なくとも 1 つの dependentAssemblyを含むコンテナー要素。 最初のサブ要素は、dependentAssembly 要素である必要があります。 依存関係 には属性がありません。 随意。
-
dependentAssemblyを する
-
最初のサブ要素は、このアセンブリ マニフェストを所有するサイド バイ サイド アセンブリによって使用されるサイド バイ サイド アセンブリを記述して一意に識別する、assemblyIdentity 要素である必要があります。 すべての dependentAssembly は、1 つの 依存関係内に存在する必要があります。 随意。
-
ファイルの
-
サイド バイ サイド アセンブリで使用されるファイルを格納します。 comClass 、typelib、windowClass、comInterfaceProxyStub サブ要素を含みます。 随意。
ファイル 要素には、次の属性があります。
属性 形容 名の ファイルの名前 (例: Conctl32.dll)。 hashalg を する ファイルのハッシュを作成するために使用されるアルゴリズム。 この値は SHA1 にする必要があります。 ハッシュ の 名前で参照されるファイルのハッシュ。 ハッシュ アルゴリズムに応じた長さの 16 進数文字列。 -
comClassを する
-
ファイル 要素のサブ要素。 随意。
comClass 要素には、次の属性があります。
属性 形容 説明 クラス名。 clsid を する クラスを一意に識別する GUID。 必須。 値は有効な GUID の形式である必要があります。 threadingModel インプロセス COM クラスで使用されるスレッド モデル。 このプロパティが null の場合、スレッド モデルは使用されません。 コンポーネントはクライアントのメイン スレッドに作成され、他のスレッドからの呼び出しはこのスレッドにマーシャリングされます。 随意。 有効な値は、"Apartment"、"Free"、"Both"、および "Neutral" です。 tlbid を する この COM コンポーネントのタイプ ライブラリの GUID。 値は GUID の形式である必要があります。 随意。 progid を する COM コンポーネントに関連付けられているバージョン依存のプログラム識別子。 ProgID の形式はベンダー <>です。コンポーネント<します。><。 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 クラスが、MiscStatus レジストリ サブキーでオブジェクトの作成方法と表示方法を指定する必要がある OCX クラスの場合は、アセンブリ マニフェストでこの情報を複製してオブジェクトを有効にすることができます。 miscStatus、miscStatusIcon、miscStatusContent、miscStatusDocprint、および comClass 要素の miscStatusThumbnail 属性を使用して、オブジェクトの特性を指定します。 これらの属性を、次の表の属性値のコンマ区切りのリストに設定します。 これらの属性は、DVASPECT 列挙型によって提供される情報を複製します。 miscStatusIcon 、miscStatusContent、miscStatusDocprint、または miscStatusThumbnailに値見つからない場合は、miscStatus で指定 既定値が使用されます。 次の表の属性値を使用します。 これらは、OLEMISC 列挙型のビット フラグに対応します。
属性値 OLEMISC 定数 recomposeonresize OLEMISC_RECOMPOSEONRESIZE onlyiconic OLEMISC_ONLYICONIC insertnotreplace OLEMISC_INSERTNOTREPLACE 静的 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。 必須。 バージョンの タイプ ライブラリの 2 部構成のバージョン番号。 マイナー バージョン番号のみが増える場合は、以前のタイプ ライブラリのすべての機能が互換性のある方法でサポートされます。 メジャー バージョン番号が変更された場合は、タイプ ライブラリに対してコンパイルされたコードを再コンパイルする必要があります。 タイプ ライブラリのバージョン番号は、アプリケーションのバージョン番号と異なる場合があります。 必須。 helpdir を する タイプ ライブラリ内の型のヘルプ ファイルがあるディレクトリ。 アプリケーションが複数の言語のタイプ ライブラリをサポートしている場合、ライブラリはヘルプ ファイル ディレクトリ内の異なるファイル名を参照する可能性があります。 値がない場合は、"" を指定します。 必須。 resourceid を する ロケール識別子 (LCID) の 16 進文字列表現。 プレフィックスが 0 で、先頭にゼロがない 1 から 4 桁の 16 進数です。 LCID には、ニュートラルサブ言語識別子が含まれている場合があります。 詳細については、「ロケール識別子 をする」を参照してください。 随意。 フラグの このタイプ ライブラリのタイプ ライブラリ フラグの文字列形式。 具体的には、"RESTRICTED"、"CONTROL"、"HIDDEN"、"HASDISKIMAGE" のいずれかである必要があります。 これらは、LIBFLAGS 列挙体の値であり、ICreateTypeLib::SetLibFlags メソッドの uLibFlags パラメーターで指定されているものと同じフラグです。 随意。 次の例は、ファイル 要素に含まれる 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" である必要があります。 名の コードに表示されるインターフェイスの名前。 たとえば、"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}" である必要があります。 名の コードに表示されるインターフェイスの名前。 たとえば、"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 コンポーネントによって定義されていて、それらを同じウィンドウ クラスとして扱う場合にのみ使用する必要があります。 ウィンドウ クラスの登録に関する通常の規則は、ウィンドウ クラスを登録する最初のコンポーネントのみが適用されることに注意してください。これは、バージョン管理されていないためです。 次の例は、ファイル 要素に含まれる 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>