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
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.
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.
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>
Afhankelijke assembly's identificeren. In het volgende voorbeeld
myComApp
is dit afhankelijkmyManagedComp
van .<?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>
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
Maak met behulp van een XML-editor een onderdeelmanifest om de beheerde assembly te beschrijven.
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>
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 voorbeeldmyManagedComp
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>
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
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>
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
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 ismyresource.rc
de bestandsnaam van het script.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.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.