Compartir por


Cómo configurar componentes COM basados en .NET Framework para la activación sin registro

La activación sin registro para los componentes basados en .NET Framework solo es ligeramente más complicada de lo que es para los componentes COM. La configuración requiere dos manifiestos:

  • Las aplicaciones COM deben tener un manifiesto de aplicación de estilo Win32 para identificar el componente administrado.

  • Los componentes basados en .NET Framework deben tener un manifiesto de componente para obtener información de activación necesaria en tiempo de ejecución.

En este tema se describe cómo asociar un manifiesto de aplicación a una aplicación; asociar un manifiesto de componente a un componente; e inserte un manifiesto de componente en un ensamblado.

Creación de un manifiesto de aplicación

  1. Con un editor XML, cree (o modifique) el manifiesto de aplicación propiedad de la aplicación COM que interopera con uno o varios componentes administrados.

  2. Inserte el siguiente encabezado estándar al principio del archivo:

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

    Para obtener información sobre los elementos de manifiesto y sus atributos, vea Manifiestos de aplicación.

  3. Identifique el propietario del manifiesto. En el ejemplo siguiente, la myComApp versión 1 posee el archivo de manifiesto.

    <?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. Identificar ensamblados dependientes. En el ejemplo siguiente, myComApp depende de 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. Guarde y asigne un nombre al archivo de manifiesto. El nombre de un manifiesto de aplicación es el nombre del ejecutable del ensamblado seguido de la extensión .manifest. Por ejemplo, el nombre de archivo del manifiesto de aplicación para myComApp.exe es myComApp.exe.manifest.

Puede instalar un manifiesto de aplicación en el mismo directorio que la aplicación COM. Como alternativa, puede agregarlo como un recurso al archivo .exe de la aplicación. Para obtener más información, vea Acerca de los ensamblados en paralelo.

Crea un manifiesto de componentes

  1. Con un editor XML, cree un manifiesto de componente para describir el ensamblado administrado.

  2. Inserte el siguiente encabezado estándar al principio del archivo:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    </assembly>
    
  3. Identifique el propietario del archivo. El elemento <assemblyIdentity> del elemento <dependentAssembly> del archivo de manifiesto de la aplicación debe coincidir con el del manifiesto del componente. En el ejemplo siguiente, myManagedComp la versión 1.2.3.4 posee el archivo de manifiesto.

    <?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. Identifique cada clase del ensamblado. Use el <clrClass> elemento para identificar de forma única cada clase del ensamblado administrado. El elemento , que es un subelemento del <assembly> elemento, tiene los atributos descritos en la tabla siguiente.

    Atributo Description Obligatorio
    clsid Identificador que especifica la clase que se va a activar.
    description Cadena que informa al usuario sobre el componente. Una cadena vacía es el valor predeterminado. No
    name Cadena que representa la clase administrada.
    progid Identificador que se va a usar para la activación enlazada en tiempo de ejecución. No
    threadingModel Modelo de hilos de COM. "Ambos" es el valor predeterminado. No
    runtimeVersion Especifica la versión de Common Language Runtime (CLR) que se va a usar. Si no especifica este atributo y el CLR aún no está cargado, el componente se carga con la versión más reciente de CLR instalada antes de la versión 4 de CLR. Si especifica v1.0.3705, v1.1.4322 o v2.0.50727, la versión avanza automáticamente a la última versión del CLR instalada antes de la versión 4 del CLR (normalmente v2.0.50727). Si ya se ha cargado otra versión del CLR y la versión especificada se puede cargar de manera simultánea en el mismo proceso, se carga la versión especificada. De lo contrario, se usa el CLR cargado. Esto puede provocar un error de carga. No
    tlbid Identificador de la biblioteca de tipos que contiene información de tipo sobre la clase . No

    Todas las etiquetas de atributo son sensibles a mayúsculas y minúsculas. Puede obtener CLSID, ProgIDs, modelos de subprocesos y la versión en tiempo de ejecución viendo la biblioteca de tipos exportada para el ensamblado con OLE/COM ObjectViewer (Oleview.exe).

    El siguiente manifiesto del componente identifica dos clases: testClass1 y 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. Guarde y asigne un nombre al archivo de manifiesto. El nombre de un manifiesto de componente es el nombre de la biblioteca de ensamblados seguido de la extensión .manifest. Por ejemplo, el myManagedComp.dll es myManagedComp.manifest.

Debe insertar el manifiesto del componente como un recurso en el ensamblado.

Para insertar un manifiesto de componente en un ensamblado administrado

  1. Cree un script de recursos que contenga la siguiente instrucción:

    1 RT_MANIFEST myManagedComp.manifest

    En esta instrucción, myManagedComp.manifest es el nombre del manifiesto del componente que se va a insertar. En este ejemplo, el nombre del archivo de script es myresource.rc.

  2. Compile el script mediante el compilador de recursos de Microsoft Windows (Rc.exe). En el símbolo del sistema, escriba el siguiente comando:

    rc myresource.rc

    Rc.exe genera el archivo de recursos myresource.res.

  3. Vuelva a compilar el archivo de origen del ensamblado y especifique el archivo de recursos mediante la opción /win32res :

    /win32res:myresource.res

    De nuevo, myresource.res es el nombre del archivo de recursos que contiene recursos incrustados.

Consulte también