Sammansättningsmanifest
Ett sammansättningsmanifest är en XML-fil som beskriver en sida vid sida-sammansättning. Sammansättningsmanifest beskriver namn och versioner av sammansättningar, filer och resurser sida vid sida samt sammansättningarnas beroende på andra sammansättningar sida vid sida. Korrekt installation, aktivering och körning av sammansättningar sida vid sida kräver att sammansättningsmanifestet alltid medföljer en sammansättning i systemet.
En fullständig lista över XML-schemat finns i Manifestfilschema.
Sammansättningsmanifest har följande element och attribut.
Element | Attribut | Krävs |
---|---|---|
sammansättning | Ja | |
manifestVersion | Ja | |
ingetHererbart | Nej | |
assemblyIdentity | Ja | |
typ | Ja | |
namn | Ja | |
språk | Nej | |
processorArchitecture | Nej | |
version | Ja | |
publicKeyToken | Nej | |
beroende | Nej | |
beroendeAssembly | Nej | |
fil | Nej | |
namn | Ja | |
hashalg | Nej | |
hash- | Nej | |
comClass | Nej | |
beskrivning | Nej | |
clsid | Ja | |
threadingModel | Nej | |
tlbid | Nej | |
Nej | ||
miscStatus | Nej | |
miscStatusIcon | Nej | |
miscStatusContent | Nej | |
miscStatusDocPrint | Nej | |
miscStatusThumbnail | Nej | |
typelib | Nej | |
tlbid | Ja | |
version | Ja | |
helpdir | Ja | |
resourceid | Nej | |
flaggor | Nej | |
comInterfaceExternalProxyStub | Nej | |
iid | Ja | |
baseInterface | Nej | |
numMethods | Nej | |
namn | Nej | |
tlbid | Nej | |
proxyStubClsid32 | Nej | |
comInterfaceProxyStub | Nej | |
iid | Ja | |
namn | Ja | |
tlbid | Nej | |
baseInterface | Nej | |
numMethods | Nej | |
proxyStubClsid32 | Nej | |
threadingModel | Nej | |
windowClass | Nej | |
version | Nej |
Filplats
Sammansättningsmanifest kan installeras på tre platser:
- Som manifest som medföljer delade sammansättningarbör sammansättningsmanifest installeras som en separat fil i sammansättningscachen sida vid sida. Det här är vanligtvis WinSxS-mappen i Windows-katalogen.
- Som manifest som medföljer privata sammansättningarbör sammansättningsmanifest installeras i programmets katalogstruktur. Det här är vanligtvis en separat fil i samma mapp som programmets körbara fil.
- Som en resurs i en DLL är sammansättningen tillgänglig för privat användning av DLL:en. Det går inte att inkludera ett sammansättningsmanifest som en resurs i en EXE. En EXE-fil kan innehålla ett programmanifest som en resurs.
Filnamnssyntax
Namnet på ett sammansättningsmanifest är ett giltigt filnamn följt av .manifest
.
Ett sammansättningsmanifest som refererar till myassembly skulle till exempel använda följande filnamnssyntax: myassembly.<resource ID>.manifest
.
Du kan utelämna fältet <resource ID>
om sammansättningsmanifestet installeras som en separat fil eller om resurs-ID:t är 1.
Not
På grund av hur sida vid sida söker efter privata sammansättningar gäller följande namngivningsbegränsningar när du paketerar en DLL som en privat sammansättning. Ett rekommenderat sätt att göra detta är att placera sammansättningsmanifestet i DLL som en resurs. I det här fallet måste resurs-ID:t vara lika med 1 och namnet på den privata sammansättningen kan vara samma som namnet på DLL:en. Om namnet på DLL:en till exempel är Microsoft.Windows.mysample.dllkan värdet för det namnattribut som används i assemblyIdentity-elementet i manifestet också vara Microsoft.Windows.mysample. Ett annat sätt är att placera sammansättningsmanifestet i en separat fil. I det här fallet måste namnet på sammansättningen och dess manifest vara annorlunda än namnet på DLL:en. Till exempel Microsoft.Windows.mysampleAsm, Microsoft.Windows.mysampleAsm.manifest och Microsoft.Windows.Mysample.dll. Mer information om hur du söker efter privata sammansättningar sida vid sida finns i Assembly Searching Sequence.
Element
Namn på element och attribut är skiftlägeskänsliga. Värdena för element och attribut är skiftlägesokänsliga, förutom värdet för typattributet.
-
sammansättning
-
Ett containerelement. Dess första underelement måste vara en assemblyIdentity eller noInheritable element. Sammansättningsmanifestet beskriver unikt den sida-vid-sida-sammansättning som identifieras av assemblyIdentity. Krävs.
Sammansättningselementet måste finnas i namnområdet "urn:schemas-microsoft-com:asm.v1". Underordnade element i sammansättningen måste också finnas i det här namnområdet, genom arv eller genom taggning.
Elementet sammansättning har följande attribut.
Attribut Beskrivning manifestVersion Attributet manifestVersion måste anges till 1.0. -
-
Inkludera det här elementet i ett sammansättningsmanifest som anger att sammansättningen hanterar aktiveringskontexter och dess objekt. Elementet noInheritable måste vara ett underelement i en sammansättning element. Elementet assemblyIdentity bör komma efter alla noInheritable element. Elementet noInheritable krävs i sammansättningsmanifestet om sammansättningen används av något programmanifest som innehåller elementet noInherit. Ett noInheritable-element i ett programmanifest har ingen effekt. Ett noInheritable element har inga underordnade element.
-
assemblyIdentity
-
Beskriver och identifierar unikt en sida vid sida-sammansättning.
Som det första underelementet i en sammansättning element, beskriver assemblyIdentity och identifierar unikt den sida-vid-sida-sammansättning som äger det här sammansättningsmanifestet. Detta kallas DEF-kontexten assemblyIdentity för sammansättningsmanifestet.
Som det första underelementet i ett beroendeAssembly--element beskriver assemblyIdentity och identifierar unikt en sida-vid-sida-sammansättning som används av DEF-kontexten assemblyIdentity. Detta kallas för en REFERENS-kontext assemblyIdentity för sammansättningsmanifestet. Def-kontextsammansättningen kräver att REF-kontextsammansättningen fungerar korrekt. Observera att varje REF-kontext assemblyIdentity måste exakt matcha motsvarande DEF-kontext assemblyIdentity i den refererade sammansättningens eget sammansättningsmanifest.
Det här elementet har inga underelement. Elementet assemblyIdentity har följande attribut.
Attribut Beskrivning typ Anger sammansättningstypen. Värdet måste vara win32 och i gemener. Krävs. namn Namnger sammansättningen unikt. Använd följande format för sammansättningsnamnet: Organization.Division.Name. Till exempel Microsoft.Windows.mysampleAsm. Krävs. Observera att om en DLL paketeras som en privat sammansättning med en separat manifestfil måste namnet på sammansättningen skilja sig från namnet på DLL och manifestet. språk Identifierar språket för sammansättningen. Valfri. Om sammansättningen är språkspecifik anger du DHTML-språkkoden. I DEF-kontexten assemblyIdentity för ett sammansättningsmanifest som är avsett för global användning (språkneutralt) utelämnar språkattributet.
I en REFERENS-kontext assemblyIdentity för ett sammansättningsmanifest avsett för världsomspännande användning (språkneutral) anger du värdet för språket till "*".processorArchitecture Anger processorn. Giltiga värden är x86 för 32-bitars Windows och ia64 för 64-bitars Windows. Valfri. version Anger sammansättningsversionen. Använd versionsformatet i fyra delar: mmmmm.nnnnn.ooooo.ppppp. Var och en av delarna avgränsas med perioder kan vara 0-65535 inklusive. Mer information finns i sammansättningsversioner. Krävs. publicKeyToken En hexadecimal sträng på 16 tecken som representerar de sista 8 byteen av SHA-1-hashen för den offentliga nyckeln under vilken sammansättningen är signerad. Den offentliga nyckel som används för att signera katalogen måste vara 2 048 bitar eller större. Krävs för delade sammansättningar sida vid sida. -
beroende
-
Ett containerelement med minst en beroendeAssembly. Det första underelementet måste vara ett beroendeAssembly- element. Ett beroende har inga attribut. Valfri.
-
beroendeAssembly
-
Det första underelementet måste vara ett assemblyIdentity element som beskriver och unikt identifierar en sida vid sida-sammansättning som används av den sida-vid-sida-sammansättning som äger det här sammansättningsmanifestet. Varje beroendeAssembly måste finnas i exakt ett beroende. Valfri.
-
fil
-
Innehåller filer som används av en sida vid sida-sammansättning. Innehåller comClass, typelib, windowClass, comInterfaceProxyStub subelement. Valfri.
-filen-elementet har följande attribut.
Attribut Beskrivning namn Namnet på filen, till exempel Conctl32.dll. hashalg Algoritm som används för att skapa en hash för filen. Det här värdet ska vara SHA1. hash- En hash för filen som refereras till med namn. En hexadecimal sträng med längd beroende på hash-algoritmen. -
comClass
-
Ett underelement i en fil element. Valfri.
Elementet comClass har följande attribut.
Attribut Beskrivning beskrivning Klassnamn. clsid DET GUID som unikt identifierar klassen. Krävs. Värdet måste vara i formatet för ett giltigt GUID. threadingModel Den trådningsmodell som används av com-klasser i processen. Om den här egenskapen är null används ingen trådmodell. Komponenten skapas i klientens huvudtråd och anrop från andra trådar konverteras till den här tråden. Valfri. Giltiga värden är: "Apartment", "Free", "Both" och "Neutral". tlbid GUID för typbiblioteket för den här COM-komponenten. Värdet måste vara i formatet för ett GUID. Valfri. Versionsberoende programmatisk identifierare som är associerad med COM-komponenten. Formatet för ett ProgID är <leverantör>.<komponenten>.<version>. miscStatus Dubbletter i sammansättningen visar informationen som tillhandahålls av MiscStatus-registernyckeln. Om värden för miscStatusIcon, miscStatusContent, miscStatusDocprinteller miscStatusThumbnail attribut inte hittas, används motsvarande standardvärde i miscStatus för de attribut som saknas. Värdet kan vara en kommaavgränsad lista över attributvärdena från tabellen nedan. Du kan använda det här attributet om COM-klassen är en OCX-klass som kräver Registernyckelvärden för Miscstatus. miscStatusIcon Dubbletter i sammansättningen visar den information som tillhandahålls av DVASPECT_ICON. Det kan ge en ikon för ett objekt. Värdet kan vara en kommaavgränsad lista över attributvärdena från tabellen nedan. Du kan använda det här attributet om COM-klassen är en OCX-klass som kräver Registernyckelvärden för Miscstatus. miscStatusContent Dubbletter i sammansättningen visar den information som tillhandahålls av DVASPECT_CONTENT. Det kan ge ett sammansatt dokument som kan visas för en skärm eller skrivare. Värdet kan vara en kommaavgränsad lista över attributvärdena från tabellen nedan. Du kan använda det här attributet om COM-klassen är en OCX-klass som kräver Registernyckelvärden för Miscstatus. miscStatusDocprint Dubbletter i sammansättningen visar informationen som tillhandahålls av DVASPECT_DOCPRINT. Det kan ge en objektrepresentation som kan visas på skärmen som om den skrivits ut till en skrivare. Värdet kan vara en kommaavgränsad lista över attributvärdena från tabellen nedan. Du kan använda det här attributet om COM-klassen är en OCX-klass som kräver Registernyckelvärden för Miscstatus. miscStatusThumbnail Dubbletter i en sammansättning visar informationen som tillhandahålls av DVASPECT_THUMBNAIL. Den kan ge en miniatyrbild av ett objekt som kan visas i ett webbverktyg. Värdet kan vara en kommaavgränsad lista över attributvärdena från tabellen nedan. Du kan använda det här attributet om COM-klassen är en OCX-klass som kräver Registernyckelvärden för Miscstatus. Elementet comClass kan ha <progid>... element som underordnade element, som listar versionsberoende progids.
I följande exempel visas ett comClass--element som ingår i en fil element.
<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>
Om DIN COM-klass är en OCX-klass som kräver registerundernyckeln MiscStatus för att ange hur ett objekt ska skapas och visas, kan du aktivera objektet genom att duplicera den här informationen i sammansättningsmanifestet. Ange objektets egenskaper med hjälp av miscStatus, miscStatusIcon, miscStatusContent, miscStatusDocprintoch miscStatusThumbnail attribut för elementet comClass. Ange dessa attribut till en kommaavgränsad lista med attributvärden från följande tabell. Dessa attribut duplicerar den information som skulle tillhandahållas av en DVASPECT-uppräkning. Om inget värde hittas för miscStatusIcon, miscStatusContent, miscStatusDocprinteller miscStatusThumbnailanvänds standardvärdena som anges i miscStatus. Använd attributvärden från följande tabell. Dessa motsvarar bitflaggor för en OLEMISC- uppräkning.
Attributvärde OLEMISC-konstant omkomposeonresize OLEMISC_RECOMPOSEONRESIZE onlyiconic OLEMISC_ONLYICONIC insertnotreplace OLEMISC_INSERTNOTREPLACE statisk 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 justeringsbar OLEMISC_ALIGNABLE simpleframe OLEMISC_SIMPLEFRAME setclientsitefirst OLEMISC_SETCLIENTSITEFIRST imemode TOLEMISC_IMEMODE ignoreativatewhenvisible OLEMISC_IGNOREACTIVATEWHENVISIBLE wantstomenumerge OLEMISC_WANTSTOMENUMERGE supportsmultilevelundo OLEMISC_SUPPORTSMULTILEVELUNDO -
typelib
-
Ett underelement i en fil element. Valfri.
Elementet typelib har attributen som visas i följande tabell.
Attribut Beskrivning tlbid Det unika ID:t för typbiblioteket. Krävs. version Versionsnumret i två delar av typbiblioteket. Om endast delversionsnumret ökar stöds alla funktioner i det tidigare typbiblioteket på ett kompatibelt sätt. Om huvudversionsnumret ändras måste kod som kompileras mot typbiblioteket omkompileras. Versionsnumret för typbiblioteket kan skilja sig från programmets versionsnummer. Krävs. helpdir Katalogen där hjälpfilen för typerna i typbiblioteket finns. Om programmet stöder typbibliotek för flera språk kan biblioteken referera till olika filnamn i katalogen Hjälpfil. Om inget värde anger du "". Krävs. resourceid Den hexadecimala strängrepresentationen av språkidentifieraren (LCID). Det är en till fyra hexadecimala siffror utan 0x-prefix och inga inledande nollor. LCID kan ha en neutral underspråksidentifierare. Mer information finns i Nationella identifierare. Valfri. flaggor Strängrepresentationen av typbiblioteksflaggor för det här typbiblioteket. Mer specifikt bör det vara en av "RESTRICTED", "CONTROL", "HIDDEN" och "HASDISKIMAGE". Det här är värdena för LIBFLAGS- uppräkning och är samma flaggor som anges i parametern uLibFlags för ICreateTypeLib::SetLibFlags-metoden. Valfri. I följande exempel visas ett typelib- element som ingår i en fil element.
<file name="sampleu.dll"> <typelib tlbid="{44EC0535-400F-11D0-9DCD-00A0C90391D3}" version="1.0" helpdir=""/> </file>
-
comInterfaceExternalProxyStub
-
comInterfaceExternalProxyStub är ett underelement i en sammansättning element och används för automationsgränssnitt. Till exempel IDispatch och dess härledda gränssnitt. Valfri.
Standardimplementeringen av proxy-stub är tillräcklig för de flesta automationsgränssnitt, till exempel gränssnitt som härleds från IDispatch. Gränssnittet proxy stub, och alla andra externa proxy-stub gränssnitt implementeringar, måste anges i comInterfaceExternalProxyStub. Elementet comInterfaceExternalProxyStub har attributen som visas i följande tabell.
Attribut Beskrivning iid IID för gränssnittet som proxyn deklareras för. Krävs. Värdet ska vara i formuläret {iid}. baseInterface IID:t för gränssnittet som beskrivs av attributet iid härleds. Det här attributet är valfritt. Värdet ska vara i formuläret {iid}. numMethods Antalet metoder som implementeras av gränssnittet. Det här attributet är valfritt. Värdet ska vara i formuläret : "n". namn Namnet på gränssnittet som det skulle visas i kod. Till exempel "IViewObject". Detta bör inte vara en beskrivande sträng. Det här attributet är valfritt. Värdet ska vara i formuläret : "name". tlbid Typbiblioteket som innehåller beskrivningen av gränssnittet som anges av attributet iid. Det här attributet är valfritt. Värdet ska vara i formuläret : "{tlbid}" . proxyStubClsid32 Mappar ett IID till ett CLSID i 32-bitars proxy-DLL:er. I följande exempel visas ett comInterfaceExternalProxyStub- element.
<comInterfaceExternalProxyStub name="IAxWinAmbientDispatch" iid="{B6EA2051-048A-11D1-82B9-00C04FB9942E}" numMethods="35" baseInterface="{00000000-0000-0000-C000-000000000046}"/>
-
comInterfaceProxyStub
-
Ett underelement i en fil element. Valfri.
Om en fil i sammansättningen implementerar en proxy-stub måste motsvarande filtagg innehålla en comInterfaceProxyStub underelement med attribut som är identiska med en comInterfaceProxyStub element. Om du utelämnar vissa av de comInterfaceProxyStub- beroenden för komponenten kan det hända att gränssnitten mellan processer och trådar inte fungerar som förväntat.
Elementet comInterfaceProxyStub har följande attribut.
Attribut Beskrivning iid Den. IID för det gränssnitt som proxyn deklareras för. Krävs. Värdet ska vara i formuläret {iid}. namn Namnet på gränssnittet som det skulle visas i kod. Till exempel "IViewObject". Detta bör inte vara en beskrivande sträng. Det här attributet är valfritt. Värdet ska vara i formuläret : "name". tlbid Typbiblioteket som innehåller beskrivningen av gränssnittet som anges av attributet iid. Det här attributet är valfritt. Värdet ska vara i formuläret : {tlbid}. baseInterface IID:t för gränssnittet som beskrivs av attributet iid härleds. Det här attributet är valfritt. Värdet ska vara i formuläret {iid}. numMethods Antalet metoder som implementeras av gränssnittet. Det här attributet är valfritt. Värdet ska vara i formuläret : "n". proxyStubClsid32 Mappar ett IID till ett CLSID i 32-bitars proxy-DLL:er. threadingModel Den trådningsmodell som används av com-klasser i processen. Om den här egenskapen är null används ingen trådmodell. Komponenten skapas i klientens huvudtråd och anrop från andra trådar konverteras till den här tråden. Valfri. Giltiga värden är: "Apartment", "Free", "Both" och "Neutral". -
-
Namnet på en Windows-klass som ska versionshanteras. Elementet windowclass har följande attribut.
Attribut Beskrivning version Det här attributet styr om det interna fönsterklassnamnet som används i registreringen innehåller den version av sammansättningen som innehåller fönsterklassen. Värdet för det här attributet kan vara "ja" eller "nej". Standardvärdet är "ja". Värdet "nej" bör endast användas om samma fönsterklass definieras av en komponent sida vid sida och en motsvarande komponent som inte är sida vid sida och du vill behandla dem som samma fönsterklass. Observera att de vanliga reglerna för registrering av fönsterklass endast gäller den första komponenten som registrerar fönsterklassen kommer att kunna registrera den eftersom den inte är version. I följande exempel visas ett element i en fil element.
<file name="comctl32.dll"> <windowClass versioned="no">ToolbarWindow32</windowClass> </file>
Exempel
Följande är ett exempel på ett sammansättningsmanifest.
<?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>