Share via


Procedure: COM-onderdelen op basis van .NET Framework configureren voor activering zonder registratie

Activering zonder registratie voor onderdelen op basis van .NET Framework is slechts iets ingewikkelder dan voor COM-onderdelen. Voor de installatie zijn twee manifesten vereist:

  • COM-toepassingen moeten een Win32-toepassingsmanifest hebben om het beheerde onderdeel te identificeren.

  • Onderdelen op basis van .NET Framework moeten een onderdeelmanifest hebben voor activeringsgegevens die nodig zijn tijdens de runtime.

In dit onderwerp wordt beschreven hoe u een toepassingsmanifest koppelt aan een toepassing; een onderdeelmanifest koppelen aan een onderdeel; en sluit een onderdeelmanifest in een assembly in.

Een toepassingsmanifest maken

  1. Maak (of wijzig) met behulp van een XML-editor het toepassingsmanifest dat eigendom is van de COM-toepassing die met een of meer beheerde onderdelen werkt.

  2. Voeg de volgende standaardkoptekst toe aan het begin van het bestand:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    </assembly>
    

    Zie Toepassingsmanifesten voor informatie over manifestelementen en hun kenmerken.

  3. Identificeer de eigenaar van het manifest. In het volgende voorbeeld myComApp is versie 1 eigenaar van het manifestbestand.

    <?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. Afhankelijke assembly's identificeren. In het volgende voorbeeld myComApp is dit afhankelijk myManagedCompvan .

    <?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. Sla het manifestbestand op en geef het een naam. De naam van een toepassingsmanifest is de naam van het uitvoerbare assemblybestand, gevolgd door de extensie .manifest. De naam van het manifestbestand van de toepassing voor myComApp.exe is bijvoorbeeld myComApp.exe.manifest.

U kunt een toepassingsmanifest installeren in dezelfde map als de COM-toepassing. U kunt deze ook toevoegen als een resource aan het .exe-bestand van de toepassing. Zie Over side-by-side assembly's voor meer informatie.

Een onderdeelmanifest maken

  1. Maak met behulp van een XML-editor een onderdeelmanifest om de beheerde assembly te beschrijven.

  2. Voeg de volgende standaardkoptekst toe aan het begin van het bestand:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    </assembly>
    
  3. Identificeer de eigenaar van het bestand. Het <assemblyIdentity> element van het element in het manifestbestand van de <dependentAssembly> toepassing moet overeenkomen met het element in het onderdeelmanifest. In het volgende voorbeeld myManagedComp is versie 1.2.3.4 eigenaar van het manifestbestand.

    <?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. Identificeer elke klasse in de assembly. Gebruik het <clrClass> element om elke klasse in de beheerde assembly uniek te identificeren. Het element, een subelement van het <assembly> element, bevat de kenmerken die in de volgende tabel worden beschreven.

    Kenmerk Beschrijving Vereist
    clsid De id waarmee de klasse wordt opgegeven die moet worden geactiveerd. Ja
    description Een tekenreeks die de gebruiker informeert over het onderdeel. Een lege tekenreeks is de standaardreeks. Nee
    name Een tekenreeks die de beheerde klasse vertegenwoordigt. Ja
    progid De id die moet worden gebruikt voor late activering. Nee
    threadingModel Het COM-threadingmodel. 'Beide' is de standaardwaarde. Nee
    runtimeVersion Hiermee geeft u de CLR-versie (Common Language Runtime) op die moet worden gebruikt. Als u dit kenmerk niet opgeeft en de CLR nog niet is geladen, wordt het onderdeel geladen met de meest recente geïnstalleerde CLR vóór CLR versie 4. Als u v1.0.3705, v1.1.4322 of v2.0.50727 opgeeft, wordt de versie automatisch doorgestuurd naar de meest recente geïnstalleerde CLR-versie vóór CLR versie 4 (meestal v2.0.50727). Als er al een andere versie van de CLR is geladen en de opgegeven versie naast elkaar kan worden geladen, wordt de opgegeven versie geladen; anders wordt de geladen CLR gebruikt. Dit kan leiden tot een laadfout. Nee
    tlbid De id van de typebibliotheek die typegegevens over de klasse bevat. Nee

    Alle kenmerktags zijn hoofdlettergevoelig. U kunt CLSID's, ProgID's, threadingmodellen en de runtimeversie verkrijgen door de geëxporteerde typebibliotheek voor de assembly te bekijken met de OLE/COM ObjectViewer (Oleview.exe).

    Het volgende onderdeelmanifest identificeert twee klassen en 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. Sla het manifestbestand op en geef het een naam. De naam van een onderdeelmanifest is de naam van de assemblybibliotheek, gevolgd door de extensie .manifest. De myManagedComp.dll is bijvoorbeeld myManagedComp.manifest.

U moet het onderdeelmanifest insluiten als een resource in de assembly.

Een onderdeelmanifest insluiten in een beheerde assembly

  1. Maak een resourcescript met de volgende instructie:

    1 RT_MANIFEST myManagedComp.manifest

    In deze instructie myManagedComp.manifest is de naam van het onderdeelmanifest dat wordt ingesloten. In dit voorbeeld is myresource.rcde bestandsnaam van het script.

  2. Compileer het script met behulp van de Microsoft Windows Resource Compiler (Rc.exe). Typ de volgende opdracht bij de opdrachtprompt:

    rc myresource.rc

    Rc.exe produceert het myresource.res resourcebestand.

  3. Compileer het bronbestand van de assembly opnieuw en geef het resourcebestand op met behulp van de optie /win32res :

    /win32res:myresource.res

    Nogmaals, myresource.res is de naam van het resourcebestand met ingesloten resources.

Zie ook