次の方法で共有


アセンブリ マニフェスト

アセンブリ マニフェストは、サイド バイ サイド アセンブリを記述する 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 要素には、次の属性があります。

属性 形容
アセンブリの種類を指定します。 値は win32 で、小文字である必要があります。 必須。
名の アセンブリに一意の名前を付けます。 アセンブリ名には、次の形式を使用します:Organization.Division.Name。 たとえば、Microsoft.Windows.mysampleAsm です。 必須。 個別のマニフェスト ファイルを持つプライベート アセンブリとしてパッケージ化された DLL の場合、アセンブリの名前は DLL とマニフェストの名前と異なる必要があることに注意してください。
言語 アセンブリの言語を識別します。 随意。 アセンブリが言語固有の場合は、DHTML 言語コードを指定します。 DEF コンテキスト アセンブリ マニフェストの assemblyIdentity は、世界中で使用することを目的としています (言語に依存しない) 言語属性を省略します。
REF コンテキスト アセンブリ マニフェストの assemblyIdentity は、世界中で使用することを目的としています (言語に依存しない) 場合は、言語の値を "*" に設定します。
processorArchitecture プロセッサを指定します。 有効な値は、32 ビット Windows の場合は x86、64 ビット Windows の場合は ia64 です。 随意。
バージョンの アセンブリのバージョンを指定します。 4 部構成のバージョン形式 mmmmm.nnnnn.ooooo.ppppp を使用します。 期間で区切られた各部分は、0 から 65535 までの範囲で指定できます。 詳細については、「アセンブリバージョン を参照してください。 必須。
publicKeyToken する アセンブリが署名されている公開キーの SHA-1 ハッシュの最後の 8 バイトを表す 16 文字の 16 進文字列。 カタログの署名に使用される公開キーは、2048 ビット以上である必要があります。 サイド バイ サイド アセンブリを共有する場合に必要です。

依存関係

少なくとも 1 つの dependentAssemblyを含むコンテナー要素。 最初のサブ要素は、dependentAssembly 要素である必要があります。 依存関係 には属性がありません。 随意。

dependentAssembly する

最初のサブ要素は、このアセンブリ マニフェストを所有するサイド バイ サイド アセンブリによって使用されるサイド バイ サイド アセンブリを記述して一意に識別する、assemblyIdentity 要素である必要があります。 すべての dependentAssembly は、1 つの 依存関係内に存在する必要があります。 随意。

ファイルの

サイド バイ サイド アセンブリで使用されるファイルを格納します。 comClass typelibwindowClasscomInterfaceProxyStub サブ要素を含みます。 随意。

ファイル 要素には、次の属性があります。

属性 形容
名の ファイルの名前 (例: 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 レジストリ キーによって提供される情報を複製します。 miscStatusIconmiscStatusContentmiscStatusDocprint、または 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 クラスの場合は、アセンブリ マニフェストでこの情報を複製してオブジェクトを有効にすることができます。 miscStatusmiscStatusIconmiscStatusContentmiscStatusDocprint、および comClass 要素の miscStatusThumbnail 属性を使用して、オブジェクトの特性を指定します。 これらの属性を、次の表の属性値のコンマ区切りのリストに設定します。 これらの属性は、DVASPECT 列挙型によって提供される情報を複製します。 miscStatusIcon miscStatusContentmiscStatusDocprint、または 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>