Dela via


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

  1. Använd en XML-redigerare, skapa (eller ändra) programmanifestet som ägs av COM-programmet som samverkar med en eller flera hanterade komponenter.

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

  3. 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>
    
  4. 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>
    
  5. 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

  1. Använd en XML-redigerare och skapa ett komponentmanifest för att beskriva den hanterade sammansättningen.

  2. 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>
    
  3. Identifiera filens ägare. Elementet <assemblyIdentity> i -elementet <dependentAssembly> i programmanifestfilen måste matcha det i komponentmanifestet. I följande exempel myManagedComp ä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>
    
  4. 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 testClass1testClass2.

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

  1. 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 är myresource.rcskriptfilens namn .

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

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

Se även