Sdílet prostřednictvím


Manifesty sestavení

Manifest sestavení je soubor XML, který popisuje souběžné sestavení. Manifesty sestavení popisují názvy a verze souběžných sestavení, souborů a prostředků sestavení a také závislost sestavení na jiných souběžných sestaveních. Správná instalace, aktivace a spouštění souběžných sestavení vyžaduje, aby manifest sestavení vždy doprovázel sestavení v systému.

Úplný seznam schématu XML naleznete v tématu Schéma souboru manifestu.

Manifesty sestavení mají následující prvky a atributy.

Element Atributy Požadovaný
sestavení Ano
manifestVersion Ano
noInheritable Ne
assemblyIdentity Ano
typ Ano
název Ano
jazyka Ne
processorArchitecture Ne
verze Ano
publicKeyToken Ne
závislostí Ne
dependentAssembly Ne
souboru Ne
název Ano
hashalg Ne
hash Ne
comClass Ne
popis Ne
clsid Ano
threadingModel Ne
tlbid Ne
Ne
miscStatus Ne
miscStatusIcon Ne
miscStatusContent Ne
miscStatusDocPrint Ne
miscStatusThumbnail Ne
typelib Ne
tlbid Ano
verze Ano
helpdir Ano
id prostředku Ne
příznaky Ne
comInterfaceExternalProxyStub Ne
Ano
baseInterface Ne
numMethods Ne
název Ne
tlbid Ne
proxyStubClsid32 Ne
comInterfaceProxyStub Ne
Ano
název Ano
tlbid Ne
baseInterface Ne
numMethods Ne
proxyStubClsid32 Ne
threadingModel Ne
windowClass Ne
s verzí Ne

Umístění souboru

Manifesty sestavení je možné nainstalovat do tří umístění:

  • Jako manifesty, které doprovázejí sdílená sestavení, by se manifesty sestavení měly nainstalovat jako samostatný soubor v mezipaměti sestavení vedle sebe. Obvykle se jedná o složku WinSxS v adresáři Systému Windows.
  • Jako manifesty, které doprovázejí privátní sestavení, by manifesty sestavení měly být nainstalovány v adresářové struktuře aplikace. Obvykle se jedná o samostatný soubor ve stejné složce jako spustitelný soubor aplikace.
  • Jako prostředek v knihovně DLL je sestavení k dispozici pro soukromé použití knihovny DLL. Manifest sestavení nelze zahrnout jako prostředek v exe. Soubor EXE může obsahovat manifest aplikace jako prostředek.

Syntaxe názvu souboru

Název manifestu sestavení je libovolný platný název souboru následovaný .manifest.

Například manifest sestavení, který odkazuje na myassembly, by použil následující syntaxi názvu souboru: myassembly.<resource ID>.manifest. Pole <resource ID> můžete vynechat, pokud je manifest sestavení nainstalován jako samostatný soubor nebo pokud je ID prostředku 1.

Poznámka

Vzhledem k tomu, jak vedle sebe hledá privátní sestavení, platí následující omezení pojmenování při balení knihovny DLL jako privátního sestavení. Doporučeným způsobem je umístit manifest sestavení do knihovny DLL jako prostředek. V tomto případě se ID prostředku musí rovnat 1 a název privátního sestavení může být stejný jako název knihovny DLL. Například pokud je název knihovny DLL Microsoft.Windows.mysample.dll, hodnota atributu name použitý v assemblyIdentity prvek manifestu může být také Microsoft.Windows.mysample. Alternativním způsobem je umístit manifest sestavení do samostatného souboru. V tomto případě se název sestavení a jeho manifestu musí lišit od názvu knihovny DLL. Například Microsoft.Windows.mysampleAsm, Microsoft.Windows.mysampleAsm.manifest a Microsoft.Windows.Mysample.dll. Další informace o tom, jak vedle sebe hledá soukromá sestavení, naleznete v tématu pořadí vyhledávání sestavení.

Elementy

V názvech prvků a atributů se rozlišují malá a velká písmena. Hodnoty elementů a atributů nerozlišují malá a velká písmena, s výjimkou hodnoty atributu typu.

sestavení

Element kontejneru. Prvním dílčím prvkem musí být assemblyIdentity nebo prvek noInheritable. Manifest sestavení jednoznačně popisuje souběžné sestavení identifikované assemblyIdentity. Požadovaný.

Element sestavení musí být v oboru názvů urn:schemas-microsoft-com:asm.v1. Podřízené prvky sestavení musí být také v tomto oboru názvů dědičností nebo označováním.

Element sestavení má následující atribut.

Atribut Popis
manifestVersion Atribut manifestVersion musí být nastaven na hodnotu 1.0.

noInheritable

Zahrňte tento prvek do manifestu sestavení, který označuje, že sestavení spravuje kontexty aktivace a jeho objekty. Element noInheritable musí být dílčím prvkem sestavení. Element assemblyIdentity by měl pocházet za libovolný prvek noInheritable. Element noInheritable je vyžadován v manifestu sestavení, pokud je sestavení používáno všemi manifesty aplikace, které zahrnují noInherit element. Prvek noInheritable v manifestu aplikace nemá žádný vliv. Prvek noInheritable neobsahuje žádné podřízené prvky.

assemblyIdentity

Popisuje a jednoznačně identifikuje souběžné sestavení.

Jako první dílčí prvek sestaveníassemblyIdentity popisuje a jednoznačně identifikuje souběžné sestavení, které vlastní tento manifest sestavení. To se nazývá def-context assemblyIdentity manifest sestavení.

Jako první dílčí prvek dependentAssembly prvek assemblyIdentity popisuje a jednoznačně identifikuje souběžné sestavení, které je používáno kontextem DEF assemblyIdentity. Tomu se říká kontext REF assemblyIdentity manifestu sestavení. Sestavení kontextu DEF vyžaduje, aby sestavení ref-context fungovalo správně. Všimněte si, že každý kontext REF assemblyIdentity musí přesně odpovídat odpovídajícímu kontextu DEF assemblyIdentity v odkazovaném manifestu sestavení.

Tento prvek nemá žádné dílčí prvky. Element assemblyIdentity má následující atributy.

Atribut Popis
typ Určuje typ sestavení. Hodnota musí být win32 a v malých písmenech. Požadovaný.
název Jednoznačně pojmenuje sestavení. Pro název sestavení použijte následující formát: Organization.Division.Name. Například Microsoft.Windows.mysampleAsm. Požadovaný. Všimněte si, že v případě knihovny DLL zabalené jako soukromé sestavení se samostatným souborem manifestu musí být název sestavení jiný než název knihovny DLL a manifestu.
jazyka Identifikuje jazyk sestavení. Volitelný. Pokud je sestavení specifické pro jazyk, zadejte kód jazyka DHTML. V kontextu DEF assemblyIdentity manifestu sestavení určeného pro použití po celém světě (jazyk neutrální) vynechat atribut jazyka.
V kontextu REF assemblyIdentity manifestu sestavení určeného pro použití po celém světě (jazyk neutrální) nastavte hodnotu jazyka na "*".
processorArchitecture Určuje procesor. Platné hodnoty jsou x86 pro 32bitovou verzi Windows a ia64 pro 64bitovou verzi Windows. Volitelný.
verze Určuje verzi sestavení. Použijte formát čtyřdílné verze: mmmmm.nnnnn.oooo.ppppp. Každá část oddělená tečkami může být 0–65535 včetně. Další informace naleznete v tématu verze sestavení. Požadovaný.
publicKeyToken Šestnáctkový řetězec o 16 znacích představující posledních 8 bajtů hodnoty hash SHA-1 veřejného klíče, pod kterým je sestavení podepsáno. Veřejný klíč použitý k podepsání katalogu musí být 2048 bitů nebo vyšší. Vyžadováno pro sdílená souběžná sestavení.

závislostí

Element kontejneru, včetně alespoň jednoho dependentAssembly. Prvním dílčím prvkem musí být dependentAssembly element. Závislost nemá žádné atributy. Volitelný.

dependentAssembly

Prvním dílčím prvkem musí být assemblyIdentity element, který popisuje a jednoznačně identifikuje souběžné sestavení, které je používáno souběžným sestavením, které vlastní tento manifest sestavení. Každý dependentAssembly musí být uvnitř přesně jednoho závislostí. Volitelný.

soubor

Obsahuje soubory používané souběžným sestavením. Obsahuje comClass, typelib, windowClass, comInterfaceProxyStub dílčí prvky. Volitelný.

Element souboru má následující atributy.

Atribut Popis
název Název souboru, například Conctl32.dll.
hashalg Algoritmus použitý k vytvoření hodnoty hash souboru. Tato hodnota by měla být SHA1.
hash Hodnota hash souboru, na který odkazuje název. Šestnáctkový řetězec délky v závislosti na algoritmu hash.

comClass

Dílčí prvek souboru. Volitelný.

Element comClass má následující atributy.

Atribut Popis
popis Název třídy.
clsid Identifikátor GUID, který jednoznačně identifikuje třídu. Požadovaný. Hodnota musí být ve formátu platného identifikátoru GUID.
threadingModel Model vláken používaný třídami modelu COM v procesu. Pokud je tato vlastnost null, pak se nepoužívá žádný model threadingu. Komponenta je vytvořena v hlavním vlákně klienta a volání z jiných vláken jsou zařazena do tohoto vlákna. Volitelný. Platné hodnoty jsou: "Apartment", "Free", "Both" a "Neutral".
tlbid IDENTIFIKÁTOR GUID pro knihovnu typů pro tuto komponentu COM. Hodnota musí být ve formátu identifikátoru GUID. Volitelný.
Programový identifikátor závislý na verzi přidružený ke komponentě COM. Formát Identifikátoru ProgID je <dodavatele>.<komponent>.<verze>.
miscStatus Duplikuje se v manifestu sestavení informace poskytnuté klíčem registru MiscStatus. Pokud hodnoty miscStatusIcon, miscStatusContent, miscStatusDocprintnebo miscStatusThumbnail atributy nejsou nalezeny, odpovídající výchozí hodnota uvedená v miscStatus se použije pro chybějící atributy. Hodnota může být čárkami oddělený seznam hodnot atributů z následující tabulky. Tento atribut můžete použít, pokud je třída COM třída OCX, která vyžaduje hodnoty klíče registru Miscstatus.
miscStatusIcon Duplikuje v manifestu sestavení informace poskytnuté DVASPECT_ICON. Může poskytnout ikonu objektu. Hodnota může být čárkami oddělený seznam hodnot atributů z následující tabulky. Tento atribut můžete použít, pokud je třída COM třída OCX, která vyžaduje hodnoty klíče registru Miscstatus.
miscStatusContent Duplikuje v manifestu sestavení informace poskytované DVASPECT_CONTENT. Může poskytovat složený dokument, který lze zobrazit pro obrazovku nebo tiskárnu. Hodnota může být čárkami oddělený seznam hodnot atributů z následující tabulky. Tento atribut můžete použít, pokud je třída COM třída OCX, která vyžaduje hodnoty klíče registru Miscstatus.
miscStatusDocprint Duplikuje v manifestu sestavení informace poskytnuté DVASPECT_DOCPRINT. Může poskytnout reprezentaci objektu zobrazenou na obrazovce, jako by byla vytištěna na tiskárně. Hodnota může být čárkami oddělený seznam hodnot atributů z následující tabulky. Tento atribut můžete použít, pokud je třída COM třída OCX, která vyžaduje hodnoty klíče registru Miscstatus.
miscStatusThumbnail Duplikuje v manifestu sestavení informace poskytované DVASPECT_THUMBNAIL. Může poskytnout miniaturu objektu, který se dá zobrazit v nástroji pro procházení. Hodnota může být čárkami oddělený seznam hodnot atributů z následující tabulky. Tento atribut můžete použít, pokud je třída COM třída OCX, která vyžaduje hodnoty klíče registru Miscstatus.

Element comClass může mít <progid>... prvky jako podřízené prvky, které uvádějí závislé verze progids.

Následující příklad ukazuje comClass element, který je součástí souboru elementu.

<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>

Pokud je třída COM třída OCX, která vyžaduje podklíč registru MiscStatus určit, jak vytvořit a zobrazit objekt, můžete objekt povolit duplikováním těchto informací v manifestu sestavení. Zadejte vlastnosti objektu pomocí miscStatus, miscStatusIcon, miscStatusContent, miscStatusDocprinta miscStatusThumbnail atributy comClass elementu. Nastavte tyto atributy na čárkami oddělený seznam hodnot atributů z následující tabulky. Tyto atributy duplikují informace, které by byly poskytnuty výčtem DVASPECT. Pokud se pro miscStatusIcon, miscStatusContent, miscStatusDocprintnebo miscStatusThumbnail, použije se výchozí hodnoty zadané v miscStatus. Použijte hodnoty atributů z následující tabulky. Ty odpovídají bitovým příznakům OLEMISC výčtu.

Hodnota atributu OLEMISC – konstanta
recomposeonresize OLEMISC_RECOMPOSEONRESIZE
onlyiconic OLEMISC_ONLYICONIC
insertnotreplace OLEMISC_INSERTNOTREPLACE
statický 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
funguje podobně jako tlačítko OLEMISC_ACTSLIKEBUTTON
znaménka 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

Dílčí prvek souboru. Volitelný.

typelib element má atributy uvedené v následující tabulce.

Atribut Popis
tlbid Jedinečné ID knihovny typů. Požadovaný.
verze Číslo dvoudílné verze knihovny typů. Pokud se zvýší pouze číslo podverze, podporují se všechny funkce předchozí knihovny typů kompatibilním způsobem. Pokud se číslo hlavní verze změní, musí být kód zkompilovaný proti knihovně typů znovu zkompilován. Číslo verze knihovny typů se může lišit od čísla verze aplikace. Požadovaný.
helpdir Adresář, kde se nachází soubor nápovědy pro typy v knihovně typů. Pokud aplikace podporuje knihovny typů pro více jazyků, mohou knihovny odkazovat na různé názvy souborů v adresáři souborů nápovědy. Pokud žádná hodnota není, zadejte "". Požadovaný.
id prostředku Šestnáctková řetězcová reprezentace identifikátoru národního prostředí (LCID). Jedná se o jednu až čtyři šestnáctkové číslice bez předpony 0x a bez počátečních nul. LCID může mít neutrální podlanguage identifikátor. Další informace naleznete v tématu identifikátory národního prostředí. Volitelný.
příznaky Řetězcové vyjádření příznaků knihovny typů pro tuto knihovnu typů. Konkrétně by měl být jedním z "RESTRICTED", "CONTROL", "HIDDEN" a "HASDISKIMAGE". Jedná se o hodnoty LIBFLAGS výčtu a jsou to stejné příznaky zadané v uLibFlags parametru ICreateTypeLib::SetLibFlags metoda. Volitelný.

Následující příklad ukazuje typelib element, který je součástí souboru elementu.

<file name="sampleu.dll">
       <typelib tlbid="{44EC0535-400F-11D0-9DCD-00A0C90391D3}"
       version="1.0" helpdir=""/>
</file>

comInterfaceExternalProxyStub

comInterfaceExternalProxyStub je dílčím prvkem sestavení a používá se pro automatizační rozhraní. Například IDispatch a jeho odvozená rozhraní. Volitelný.

Výchozí implementace proxy-zástupných procedur je vhodná pro většinu automatizačních rozhraní, jako jsou rozhraní odvozená z IDispatch. Zástupný procedura rozhraní a všechny ostatní implementace rozhraní proxy-stub musí být uvedeny v comInterfaceExternalProxyStub. Element comInterfaceExternalProxyStub má atributy uvedené v následující tabulce.

Atribut Popis
IID rozhraní, pro které je proxy deklarováno. Požadovaný. Hodnota by měla být ve formátu {iid}.
baseInterface IID rozhraní, ze kterého je odvozen atribut iid. Tento atribut je volitelný. Hodnota by měla být ve formátu {iid}.
numMethods Počet metod implementovaných rozhraním. Tento atribut je volitelný. Hodnota by měla být ve tvaru "n".
název Název rozhraní, jak by se zobrazil v kódu. Například "IViewObject". Neměl by to být popisný řetězec. Tento atribut je volitelný. Hodnota by měla být ve formuláři: "name".
tlbid Knihovna typů, která obsahuje popis rozhraní určeného atributem iid. Tento atribut je volitelný. Hodnota by měla být ve formátu {tlbid}.
proxyStubClsid32 Mapuje IDENTIFIKÁTOR IID na CLSID v 32bitových knihovnách DLL proxy serveru.

Následující příklad ukazuje comInterfaceExternalProxyStub element.

<comInterfaceExternalProxyStub 
  name="IAxWinAmbientDispatch" 
    iid="{B6EA2051-048A-11D1-82B9-00C04FB9942E}" 
    numMethods="35" 
  baseInterface="{00000000-0000-0000-C000-000000000046}"/>

comInterfaceProxyStub

Dílčí prvek souboru. Volitelný.

Pokud soubor v sestavení implementuje zástupný kód proxy, musí odpovídající značka souboru obsahovat comInterfaceProxyStub subelement s atributy, které jsou identické s comInterfaceProxyStub element. Zařazování rozhraní mezi procesy a vlákny nemusí fungovat podle očekávání, pokud vynecháte některé z comInterfaceProxyStub závislostí pro vaši komponentu.

Element comInterfaceProxyStub má následující atributy.

Atribut Popis
Ten. IID rozhraní, pro které je proxy deklarováno. Požadovaný. Hodnota by měla být ve formátu {iid}.
název Název rozhraní, jak by se zobrazil v kódu. Například "IViewObject". Neměl by to být popisný řetězec. Tento atribut je volitelný. Hodnota by měla být ve formuláři: "name".
tlbid Knihovna typů, která obsahuje popis rozhraní určeného atributem iid. Tento atribut je volitelný. Hodnota by měla být ve formátu {tlbid}.
baseInterface IID rozhraní, ze kterého je odvozen atribut iid. Tento atribut je volitelný. Hodnota by měla být ve formátu {iid}.
numMethods Počet metod implementovaných rozhraním. Tento atribut je volitelný. Hodnota by měla být ve tvaru "n".
proxyStubClsid32 Mapuje IDENTIFIKÁTOR IID na CLSID v 32bitových knihovnách DLL proxy serveru.
threadingModel Model vláken používaný třídami modelu COM v procesu. Pokud je tato vlastnost null, pak se nepoužívá žádný model threadingu. Komponenta je vytvořena v hlavním vlákně klienta a volání z jiných vláken jsou zařazena do tohoto vlákna. Volitelný. Platné hodnoty jsou: "Apartment", "Free", "Both" a "Neutral".

windowclass

Název třídy windows, která má být verze. Element windowclass má následující atribut.

Atribut Popis
s verzí Tento atribut řídí, zda interní název třídy okna použitý v registraci obsahuje verzi sestavení obsahující třídu okna. Hodnota tohoto atributu může být "ano" nebo "ne". Výchozí hodnota je Ano. Hodnota "ne" by měla být použita pouze v případě, že stejná třída okna je definována souběžnou komponentou a ekvivalentní nestrannou komponentou a chcete je považovat za stejnou třídu okna. Všimněte si, že obvyklá pravidla týkající se registrace třídy okna platí pouze první komponenta, která registruje třídu okna, bude moci zaregistrovat, protože není verze.

Následující příklad ukazuje windowclass element, který je součástí souboru elementu.

<file name="comctl32.dll">
        <windowClass versioned="no">ToolbarWindow32</windowClass>
</file>

Příklad

Následuje příklad manifestu sestavení.

<?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>