Anvisningar: Konfigurera .NET Framework-baserade COM-komponenter för registreringsfri aktivering
Registreringsfri aktivering för .NET Framework-baserade komponenter är bara något mer komplicerad än för COM-komponenter. Konfigurationen kräver två manifest:
COM-program måste ha ett win32-liknande programmanifest för att identifiera den hanterade komponenten.
.NET Framework-baserade komponenter måste ha ett komponentmanifest för aktiveringsinformation som behövs vid körning.
Det här avsnittet beskriver hur du associerar ett programmanifest med ett program. associera ett komponentmanifest med en komponent. och bädda in ett komponentmanifest i en sammansättning.
Skapa ett programmanifest
Använd en XML-redigerare, skapa (eller ändra) programmanifestet som ägs av COM-programmet som samverkar med en eller flera hanterade komponenter.
Infoga följande standardrubrik i början av filen:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> </assembly>
Information om manifestelement och deras attribut finns i Programmanifest.
Identifiera ägaren av manifestet. I följande exempel
myComApp
äger version 1 manifestfilen.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity type="win32" name="myOrganization.myDivision.myComApp" version="1.0.0.0" processorArchitecture="msil" /> </assembly>
Identifiera beroende sammansättningar. I följande exempel
myComApp
beror påmyManagedComp
.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity type="win32" name="myOrganization.myDivision.myComApp" version="1.0.0.0" processorArchitecture="x86" publicKeyToken="8275b28176rcbbef" /> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="myOrganization.myDivision.myManagedComp" version="6.0.0.0" processorArchitecture="X86" publicKeyToken="8275b28176rcbbef" /> </dependentAssembly> </dependency> </assembly>
Spara och namnge manifestfilen. Namnet på ett programmanifest är namnet på den körbara sammansättningen följt av manifesttillägget .. Till exempel är programmanifestets filnamn för myComApp.exe myComApp.exe.manifest.
Du kan installera ett programmanifest i samma katalog som COM-programmet. Du kan också lägga till den som en resurs i programmets .exe-fil. Mer information finns i Om sammansättningar sida vid sida.
Skapa ett komponentmanifest
Använd en XML-redigerare och skapa ett komponentmanifest för att beskriva den hanterade sammansättningen.
Infoga följande standardrubrik i början av filen:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> </assembly>
Identifiera filens ägare. Elementet
<assemblyIdentity>
i -elementet<dependentAssembly>
i programmanifestfilen måste matcha det i komponentmanifestet. I följande exempelmyManagedComp
äger version 1.2.3.4 manifestfilen.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity name="myOrganization.myDivision.myManagedComp" version="1.2.3.4" publicKeyToken="8275b28176rcbbef" processorArchitecture="msil" /> </assembly>
Identifiera varje klass i sammansättningen. Använd elementet
<clrClass>
för att unikt identifiera varje klass i den hanterade sammansättningen. Elementet, som är ett underelement i elementet<assembly>
, har attributen som beskrivs i följande tabell.Attribut beskrivning Obligatoriskt clsid
Identifieraren som anger vilken klass som ska aktiveras. Ja description
En sträng som informerar användaren om komponenten. En tom sträng är standard. Nej name
En sträng som representerar den hanterade klassen. Ja progid
Identifieraren som ska användas för sen aktivering. Nej threadingModel
COM-trådningsmodellen. "Båda" är standardvärdet. Nej runtimeVersion
Anger den clr-version (common language runtime) som ska användas. Om du inte anger det här attributet och CLR inte redan har lästs in läses komponenten in med den senaste installerade CLR:en före CLR version 4. Om du anger v1.0.3705, v1.1.4322 eller v2.0.50727, återställs versionen automatiskt till den senaste installerade CLR-versionen före CLR version 4 (vanligtvis v2.0.50727). Om en annan version av CLR redan har lästs in och den angivna versionen kan läsas in sida vid sida läses den angivna versionen in. annars används den inlästa CLR:en. Detta kan orsaka ett belastningsfel. Nej tlbid
Identifieraren för typbiblioteket som innehåller typinformation om klassen. Nej Alla attributtaggar är skiftlägeskänsliga. Du kan hämta CLSID:er, ProgID:er, trådmodeller och körningsversionen genom att visa det exporterade typbiblioteket för sammansättningen med OLE/COM ObjectViewer (Oleview.exe).
Följande komponentmanifest identifierar två klasser och
testClass1
testClass2
.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity name="myOrganization.myDivision.myManagedComp" version="1.2.3.4" publicKeyToken="8275b28176rcbbef" /> <clrClass clsid="{65722BE6-3449-4628-ABD3-74B6864F9739}" progid="myManagedComp.testClass1" threadingModel="Both" name="myManagedComp.testClass1" runtimeVersion="v1.0.3705"> </clrClass> <clrClass clsid="{367221D6-3559-3328-ABD3-45B6825F9732}" progid="myManagedComp.testClass2" threadingModel="Both" name="myManagedComp.testClass2" runtimeVersion="v1.0.3705"> </clrClass> <file name="MyManagedComp.dll"> </file> </assembly>
Spara och namnge manifestfilen. Namnet på ett komponentmanifest är namnet på sammansättningsbiblioteket följt av manifesttillägget .. Till exempel är myManagedComp.dll myManagedComp.manifest.
Du måste bädda in komponentmanifestet som en resurs i sammansättningen.
Bädda in ett komponentmanifest i en hanterad sammansättning
Skapa ett resursskript som innehåller följande instruktion:
1 RT_MANIFEST myManagedComp.manifest
I den här instruktionen
myManagedComp.manifest
är namnet på komponentmanifestet som bäddas in. I det här exemplet ärmyresource.rc
skriptfilens namn .Kompilera skriptet med hjälp av Microsoft Windows Resource Compiler (Rc.exe). Skriv följande kommando i kommandotolken:
rc myresource.rc
Rc.exe skapar
myresource.res
resursfilen.Kompilera sammansättningens källfil igen och ange resursfilen med alternativet /win32res :
/win32res:myresource.res
myresource.res
Återigen är namnet på resursfilen som innehåller inbäddade resurser.