Leer en inglés

Compartir a través de


Gestione complementos en una única solución

Categoría: Mantenibilidad, Diseño

Potencial de impacto: bajo

Síntomas

Al importar una solución que contiene un complemento, es posible que vea un error como este:

ImportSolutionException: Plugin Assemblies import: FAILURE. Error: Plugin: Custom.Xrm.Plugins,
Version=1.2.0.0, Culture=neutral, PublicKeyToken=59f189e458044167 of PluginTypeName: 
Microsoft.Crm.Entities.PluginType and PluginTypeNode: caused an exception.: Plugin Types 
import: FAILURE. Error: Plugin: Custom.Xrm.Plugins, Version=1.2.0.0, Culture=neutral, 
PublicKeyToken=59f189e458044167 of PluginTypeName: Microsoft.Crm.Entities.PluginType caused an 
exception.: PluginType [Custom.Xrm.Plugins.CreateContact] not found in PluginAssembly

Este error se produce cuando se agrega un nuevo tipo de complemento a un ensamblado existente en la solución y ese ensamblado también se incluye en una solución diferente.

Instrucciones

La definición de un conjunto de complemento debe mantenerse dentro de una única solución. Es posible que desee tener una solución separada que contenga solo definiciones de complementos para ayudar a administrar los complementos.

Patrones problemáticos

A continuación, se muestran dos ejemplos de la condición en la que puede ocurrir este error. En ambos ejemplos, hay un ensamblado de complemento que representa el archivo BasicPlugin.dll. Ambos ejemplos fallarán con el error: PluginType [BasicPlugin.CreateAccount] not found in PluginAssembly.

Ejemplo 1: actualizar una solución existente

Hay dos soluciones que incluyen BasicPlugin.dll.

En el entorno de destino (administrado), el ensamblado BasicPlugin.dll tiene las siguientes capas de solución.

Capa Solución Versión de la solución Tipos BasicPlugin
1 AnotherSolution v1.0.0.0 UpdateLead
2 PluginSolution v1.0.0.0 UpdateLead

Luego, actualiza PluginSolution, cambiando la versión a v2.0.0.0 e incluye un nuevo tipo de complemento: CreateAccount.

Esto fallará porque el ensamblaje del complemento del componente de la solución de nivel superior (capa 1) no contiene el nuevo tipo de complemento CreateAccount.

Ejemplo 2: instalar una nueva solución

En el entorno de destino (administrado), el ensamblado BasicPlugin.dll tiene las siguientes capas de solución.

Capa Solución Versión de la solución Tipos BasicPlugin
1 PluginSolution v1.0.0.0 UpdateLead
CreateAccount

Cuando intenta instalar una nueva solución, AnotherSolution v1.0.0.0, que tiene un ensamblado BasicPlugin que contiene solo el tipo de complemento: UpdateLead

El error se produce porque BasicPlugin.dll en esta nueva solución no contiene el PluginType CreateAccount.

Remedios

La solución correcta es evitar la situación en la que se incluye el mismo conjunto de complemento en varias soluciones.

En los dos ejemplos anteriores, cuando el ensamblaje de complementos es parte de dos soluciones diferentes, debe mantener tipos de complementos consistentes en ambas soluciones. Si continúa manteniendo ambos ensamblajes de complemento en ambas soluciones, deberá actualizar ambas soluciones cada vez que agregue un nuevo tipo de complemento al ensamblaje.

Información adicional

Las soluciones pueden contener complementos. Los complementos constan de registros PluginAssembly y PluginType que están asociados entre sí.

PluginAssembly contiene el contenido binario del ensamblado. PluginType contiene una referencia a la clase en el ensamblado que implementa la interfaz IPlugin.

Como componentes de la solución, los complementos participan en el sistema de capas de la solución. Si el mismo ensamblado se incluye en dos soluciones instaladas una encima de la otra, las validaciones de tipo fallarán si hay tipos no coincidentes dentro de los ensamblajes.

Consulte también

Capas de soluciones