Procédure : configurer les composants COM .NET Framework pour l’activation sans inscription
L’activation sans inscription des composants .NET Framework n’est que légèrement plus compliquée que pour les composants COM. L’installation requiert deux manifestes :
Les applications COM doivent avoir un manifeste d’application de style Win32 pour identifier le composant managé.
Les composants .NET Framework doivent avoir un manifeste de composant pour les informations d’activation nécessaires au moment de l’exécution.
Cette rubrique explique comment associer un manifeste d’application à une application, comment associer un manifeste de composant à un composant et comment incorporer un manifeste de composant dans un assembly.
Créer un manifeste d’application
À l’aide d’un éditeur XML, créez (ou modifiez) le manifeste d’application de l’application COM qui interagit avec un ou plusieurs composants managés.
Insérez l’en-tête standard suivant au début du fichier :
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> </assembly>
Pour plus d’informations sur les éléments de manifeste et leurs attributs, consultez Manifestes d’application.
Identifiez le propriétaire du manifeste. Dans l’exemple suivant, le fichier manifeste appartient à
myComApp
version 1.<?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>
Identifiez les assemblys dépendants. Dans l’exemple suivant,
myComApp
dépend demyManagedComp
.<?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>
Nommez et enregistrez le fichier manifeste. Le nom d’un manifeste d’application est le nom de l’exécutable d’assembly suivi de l’extension .manifest. Par exemple, le nom du fichier manifeste d’application de myComApp.exe est myComApp.exe.manifest.
Vous pouvez installer un manifeste d’application dans le même répertoire que l’application COM. Vous pouvez également l’ajouter en tant que ressource au fichier .exe de l’application. Pour plus d’informations, consultez Assemblys côte à côte.
Créer un manifeste de composant
À l’aide d’un éditeur XML, créez un manifeste de composant pour décrire l’assembly managé.
Insérez l’en-tête standard suivant au début du fichier :
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> </assembly>
Identifiez le propriétaire du fichier. L’élément
<assemblyIdentity>
de l’élément<dependentAssembly>
dans le fichier manifeste d’application doit correspondre à celui figurant dans le manifeste de composant. Dans l’exemple suivant, le fichier manifeste appartient àmyManagedComp
version 1.2.3.4.<?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>
Identifiez chaque classe dans l’assembly. Utilisez l’élément
<clrClass>
pour identifier de manière unique chaque classe dans l’assembly managé. L’élément, qui est un sous-élément de l’élément<assembly>
, a les attributs décrits dans le tableau suivant.Attribut Description Obligatoire clsid
Identificateur qui spécifie la classe à activer. Oui description
Chaîne qui informe l’utilisateur sur le composant. L’attribut par défaut est une chaîne vide. Non name
Chaîne représentant la classe managée. Oui progid
Identificateur à utiliser pour une activation à liaison tardive. Non threadingModel
Modèle de thread COM. "Both" est la valeur par défaut. Non runtimeVersion
Spécifie la version du CLR (Common Language Runtime) à utiliser. Si vous ne spécifiez pas cet attribut et que le CLR n’est pas déjà chargé, le composant est chargé avec la version du CLR la plus récente, antérieure à la version CLR 4. Si vous spécifiez v1.0.3705, v1.1.4322 ou v2.0.50727, la version passe automatiquement à la version du CLR installée la plus récente antérieure à la version CLR 4 (habituellement v2.0.50727). Si une autre version du CLR est déjà chargée et que la version spécifiée peut être chargée in-process côte à côte, la version spécifiée est chargée ; sinon, le CLR chargé est utilisé. Cela peut provoquer un échec de chargement. Non tlbid
Identificateur de la bibliothèque de types qui contient les informations de type sur la classe. Non Toutes les balises d’attribut respectent la casse. Vous pouvez obtenir des CLSID, des ProgID, des modèles de thread et la version du runtime en affichant la bibliothèque de types exportée de l’assembly à l’aide de l’explorateur d’objets OLE/COM (Oleview.exe).
Le manifeste de composant suivant identifie deux classes,
testClass1
ettestClass2
.<?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>
Nommez et enregistrez le fichier manifeste. Le nom d’un manifeste de composant est le nom de la bibliothèque d’assemblys suivi de l’extension .manifest. Par exemple, le nom de myManagedComp.dll est myManagedComp.manifest.
Vous devez incorporer le manifeste de composant en tant que ressource dans l’assembly.
Pour incorporer un manifeste de composant dans un assembly managé
Créez un script de ressources qui contient l’instruction suivante :
1 RT_MANIFEST myManagedComp.manifest
Dans cette instruction,
myManagedComp.manifest
est le nom du manifeste de composant incorporé. Pour cet exemple, le nom du fichier de script estmyresource.rc
.Compilez le script à l’aide de l’outil Compilateur de ressources Microsoft Windows (Rc.exe). Saisissez ensuite la commande suivante dans l’invite de commandes :
rc myresource.rc
Rc.exe génère le fichier de ressources
myresource.res
.Compilez de nouveau le fichier source de l’assembly et spécifiez le fichier de ressources à l’aide de l’option /win32res :
/win32res:myresource.res
myresource.res
est de nouveau le nom du fichier de ressources contenant les ressources incorporées.