Requisitos del desarrollo de canalizaciones
Para habilitar la detección y activación de los segmentos y complementos de canalización, éstos deben satisfacer los requisitos especificados con respecto al ámbito, los atributos y la estructura de directorios.
Segmentos y ensamblados de canalización
Los complementos, los contratos y las vistas deben ser públicos. Los adaptadores y sus constructores pueden ser internos.
Normalmente, los segmentos de canalización están incluidos dentro de su propio ensamblado, aunque los segmentos que se muestran a continuación pueden combinarse en el mismo ensamblado:
Las vistas de host de los complementos y las vistas de complemento.
Los adaptadores de host y los adaptadores de conversión.
Sólo es posible combinar los adaptadores de host y de conversión en el mismo ensamblado si las vistas también se combinan en el mismo ensamblado.
Si se combina un segmento de un extremo de la canalización con su homólogo en el otro extremo (por ejemplo, las vistas de host de los complementos con las vistas de los complementos), ese ensamblado debe implementarse en ambos extremos de la canalización de dicho segmento.
Si no está combinando las vistas en el mismo ensamblado, puede combinar el host con la vista de host del complemento en el mismo ensamblado.
Requisitos de los atributos
Los segmentos de canalización que se indican a continuación requieren atributos en las clases que los definen:
Los complementos requieren AddInAttribute.
Los contratos requieren AddInContractAttribute.
Las vistas de complemento requieren AddInBaseAttribute.
Los adaptadores de conversión requieren AddInAdapterAttribute.
Los adaptadores de host requieren HostAdapterAttribute.
La vista de host del segmento de canalización del complemento no necesita ningún atributo porque ese objeto se pasa al método AddInStore.FindAddIns(Type, String, String[]) y, por tanto, no es necesario que se detecte.
En la ilustración siguiente se muestran los segmentos de canalización con sus atributos necesarios.
Modelo de complemento con los atributos necesarios en los tipos
Requisitos de los directorios de canalización
Para que .NET Framework detecte los segmentos de canalización y active los complementos, los segmentos de canalización deben colocarse en un directorio determinado. Los nombres de directorio especificados son obligatorios, pero no distinguen mayúsculas de minúsculas. Los únicos nombres que no se especifican son el nombre del directorio raíz de la canalización (que se proporciona a los métodos de detección) y los nombres de los subdirectorios que contienen los complementos. Todos los nombres de segmento especificados deben ser subdirectorios situados en el mismo nivel bajo la raíz de la canalización.
En la ilustración siguiente se muestran estos requisitos de directorio.
Directorios necesarios para el desarrollo de complementos
En la tabla siguiente se describe la estructura de directorios necesaria.
Directorio |
Descripción |
---|---|
Raíz de la canalización |
Directorio que contiene los subdirectorios de los segmentos de canalización. No hay ningún nombre obligatorio para este directorio y puede estar en cualquier ubicación. Ejemplo: ..\Pipeline |
AddIns |
Opcional. Directorio que contiene uno o varios subdirectorios, cada uno de los cuales contiene un complemento. Este directorio debe denominarse AddIns. Ejemplo: ..\Pipeline\AddIns Puede haber complementos en otras ubicaciones del sistema. |
AddInSideAdapters |
Directorio que contiene el ensamblado de adaptadores de conversión. Este directorio debe denominarse AddInSideAdapters. Ejemplo: ..\Pipeline\AddInSideAdapters |
AddInViews |
Directorio que contiene el ensamblado de vistas del complemento. Este directorio debe denominarse AddInViews. Ejemplo: ..\Pipeline\AddInViews |
Contracts |
Directorio que contiene el ensamblado de contratos. Este directorio debe denominarse Contracts. Ejemplo: ..\Pipeline\Contracts |
HostSideAdapters |
Directorio que contiene el ensamblado de adaptadores del host. Este directorio debe denominarse HostSideAdapters. Ejemplo: ..\Pipeline\HostSideAdapters |
Los métodos AddInStore.Rebuild y AddInStore.Update tienen sobrecargas que toman una variable de cadena que representa la raíz de la canalización o un valor PipelineStoreLocation. Estos métodos detectan los complementos y los segmentos de canalización disponibles en el sistema y almacenan su información en caché, en un almacén de datos. Para obtener información acerca de los métodos de detección, vea Detección de complementos.
La aplicación host y la vista de host del segmento de canalización del complemento normalmente se implementan en el mismo directorio, que puede estar en cualquier ubicación. La aplicación host necesita una referencia a la vista de host del segmento del complemento que representa el complemento que va a activarse.
La canalización puede estar en cualquier ubicación, incluso dentro de la estructura de directorios de la solución de Visual Studio. Los segmentos de canalización deben copiarse en sus directorios en la canalización. El directorio de canalización y sus subdirectorios se han diseñado para incluir varias canalizaciones. Para obtener más información acerca de distintos escenarios de canalización, vea Escenarios de canalizaciones de complementos.
Complementos en otras ubicaciones
No es necesario que los complementos se encuentren en la estructura de directorios de canalización. Si no están en la estructura de directorios de canalización, debe llamar al método AddInStore.UpdateAddIns o al método RebuildAddIns que toma como parámetro la ruta de acceso al directorio que contiene los complementos.
También debe incluir el parámetro addInPaths cuando llame al método AddInStore.FindAddIns.
Si la aplicación host conoce las rutas de acceso y los nombres de tipo completos de sus complementos, puede usar el método FindAddIn para buscar un complemento concreto, lo que evita tener que realizar consultas en la estructura de directorios de canalización. No obstante, la estructura de directorios de canalización sigue siendo necesaria.
Referencias a segmentos de canalización en Visual Studio
Cuando en un proyecto se agrega una referencia a otro segmento de canalización, por ejemplo, el adaptador de conversión necesita establecer una referencia al segmento de contrato, la referencia debe hacerse a ese proyecto del segmento y no a su ensamblado. En este ejemplo, la referencia se establecería al proyecto de contrato. Una referencia de proyecto impide que los ensamblados a los que se hace referencia se implementen en la canalización, lo que podría dar lugar a conflictos. Los conflictos también pueden evitarse si no se copian los archivos localmente.
Para agregar una referencia de proyecto
En el Explorador de soluciones, haga clic con el botón secundario en la carpeta Referencias y elija Agregar referencia.
En la ficha Proyectos, elija el proyecto que desee y haga clic en Aceptar.
En la carpeta Referencias, haga clic en la referencia de proyecto que acaba de agregar.
En Propiedades de la referencia, establezca Copia local en False.
Referencias necesarias
En la tabla siguiente se muestran los segmentos de canalización que requieren referencias de ensamblado a System.AddIn.dll y System.Contract.dll. Algunos segmentos también requieren referencias a otros segmentos compilados.
Segmento de canalización |
Referencias a ensamblados y proyectos |
Referencias a espacios de nombres y tipos |
---|---|---|
Contrato |
System.AddIn.dll System.AddIn.Contract.dll |
System.AddIn.Pipeline System.AddIn.Contract |
Vista de complemento |
System.AddIn.dll |
System.AddIn.Pipeline |
Adaptador de conversión |
System.AddIn.dll System.AddIn.Contract.dll Segmento de vista de complemento Segmento de contrato |
System.AddIn.Pipeline |
Adaptador de host |
System.AddIn.dll System.AddIn.Contract.dll Segmento de vista de host Segmento de contrato |
System.AddIn.Pipeline |
Host |
System.AddIn.dll Segmento de vista de host |
System.AddIn.Hosting Vista de host |
Complemento |
System.AddIn.dll Segmento de vista de complemento |
System.AddIn Vista de complemento |
La vista de host del complemento no presenta ningún requisito con respecto a las referencias, pero es necesaria para la aplicación host.
Implementar en la canalización en Visual Studio
En Visual Studio, puede integrar los segmentos de canalización en la estructura de directorios de canalización cambiando la ruta de acceso de compilación de resultados.
Para implementar en la canalización en Visual Studio
En el menú Herramientas, seleccione Propiedades en su proyecto y, a continuación, seleccione la ficha Generar.
Cambie la Ruta de acceso de los resultados de los segmentos de canalización por sus respectivos directorios en la estructura de directorios de canalización.
Normalmente, la aplicación host y la vista de host se implementan en el mismo directorio. El directorio de canalización puede estar en cualquier ubicación, aunque suele localizarse en el mismo directorio que la aplicación host.