Partager via


Guide pratique pour configurer des composants COM basés sur le Framework .NET pour une activation sans enregistrement

L’activation sans inscription pour les composants .NET Framework n’est que légèrement plus compliquée que pour les composants COM. Le programme d’installation nécessite 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 ; associer un manifeste de composant à un composant ; et incorporer un manifeste de composant dans un assembly.

Créer un manifeste d’application

  1. À l’aide d’un éditeur XML, créez (ou modifiez) le manifeste d’application appartenant à l’application COM qui interagit avec un ou plusieurs composants managés.

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

  3. Identifiez le propriétaire du manifeste. Dans l’exemple suivant, myComApp la version 1 possède le fichier manifeste.

    <?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. Identifier les assemblages dépendants. Dans l’exemple suivant, myComApp dépend myManagedCompde .

    <?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. Enregistrez et nommez 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 de l’application pour 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 À propos des assemblages côte à côte.

Créer un manifeste de composant

  1. À l’aide d’un éditeur XML, créez un manifeste de composant pour décrire l’assembly managé.

  2. 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>
    
  3. Identifiez le propriétaire du fichier. L’élément <assemblyIdentity> de l’élément <dependentAssembly> dans le fichier manifeste de l’application doit correspondre à celui du manifeste du composant. Dans l’exemple suivant, myManagedComp la version 1.2.3.4 possède le fichier manifeste.

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

    Caractéristique Descriptif Obligatoire
    clsid Identificateur qui spécifie la classe à activer. Oui
    description Chaîne qui informe l’utilisateur du composant. Une chaîne vide est la valeur par défaut. Non
    name Chaîne qui représente la classe managée. Oui
    progid Identificateur à utiliser pour l’activation à liaison tardive. Non
    threadingModel Modèle de thread COM. « Both » est la valeur par défaut. Non
    runtimeVersion Spécifie la version 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 le CLR installé le plus récent avant clR version 4. Si vous spécifiez v1.0.3705, v1.1.4322 ou v2.0.50727, la version est automatiquement transférée vers la dernière version du CLR installée avant clR version 4 (généralement 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 côte à côte, la version spécifiée est chargée ; sinon, le CLR chargé est utilisé. Cela peut entraîner un échec de chargement. Non
    tlbid Identificateur de la bibliothèque de types qui contient des informations de type sur la classe. Non

    Toutes les balises d'attribut sont sensibles à la casse. Vous pouvez obtenir des CLSID, des ProgIDs, des modèles de thread et la version du runtime en consultant la bibliothèque de types exportée pour l’assembly avec OLE/COM ObjectViewer (Oleview.exe).

    Le manifeste de composant suivant identifie deux classes, testClass1 et 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>
    
  5. Enregistrez et nommez le fichier manifeste. Le nom d’un manifeste de composant est le nom de la bibliothèque d’assemblage suivie de l’extension .manifest. Par exemple, le myManagedComp.dll est myManagedComp.manifest.

Vous devez incorporer le manifeste du composant en tant que ressource dans l’assembly.

Pour incorporer un manifeste de composant dans un assembly managé

  1. Créez un script de ressource qui contient l’instruction suivante :

    1 RT_MANIFEST myManagedComp.manifest

    Dans cette instruction, myManagedComp.manifest est le nom du manifeste du composant incorporé. Pour cet exemple, le nom du fichier de script est myresource.rc.

  2. Compilez le script à l’aide du compilateur de ressources Microsoft Windows (Rc.exe). À l’invite de commandes, tapez la commande suivante :

    rc myresource.rc

    Rc.exe produit le myresource.res fichier de ressources.

  3. Compilez à nouveau le fichier source de l’assembly et spécifiez le fichier de ressources à l’aide de l’option /win32res :

    /win32res:myresource.res

    Là encore, myresource.res est le nom du fichier de ressources contenant des ressources incorporées.

Voir aussi