Nota
O acceso a esta páxina require autorización. Pode tentar iniciar sesión ou modificar os directorios.
O acceso a esta páxina require autorización. Pode tentar modificar os directorios.
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
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.
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.
Identifique el propietario del manifiesto. En el ejemplo siguiente, la
myComAppversió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>Identificar ensamblados dependientes. En el ejemplo siguiente,
myComAppdepende 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>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
Con un editor XML, cree un manifiesto de componente para describir el ensamblado administrado.
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>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,myManagedCompla 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>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 clsidIdentificador que especifica la clase que se va a activar. Sí descriptionCadena que informa al usuario sobre el componente. Una cadena vacía es el valor predeterminado. No nameCadena que representa la clase administrada. Sí progidIdentificador que se va a usar para la activación enlazada en tiempo de ejecución. No threadingModelModelo de hilos de COM. "Ambos" es el valor predeterminado. No runtimeVersionEspecifica 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 tlbidIdentificador 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:
testClass1ytestClass2.<?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>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
Cree un script de recursos que contenga la siguiente instrucción:
1 RT_MANIFEST myManagedComp.manifestEn esta instrucción,
myManagedComp.manifestes el nombre del manifiesto del componente que se va a insertar. En este ejemplo, el nombre del archivo de script esmyresource.rc.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.rcRc.exe genera el archivo de recursos
myresource.res.Vuelva a compilar el archivo de origen del ensamblado y especifique el archivo de recursos mediante la opción /win32res :
/win32res:myresource.resDe nuevo,
myresource.reses el nombre del archivo de recursos que contiene recursos incrustados.