top of page
  • Foto del escritorAlejandro Caravantes Molina

Ejecución de Plugins con dependencias de otras librerías


Y cuando pensabamos que en lo relativo a los plugins de Microsoft Dataverse poco margen de novedad quedaba... ¡ZAS!. Llega el equipo de Microsoft Power Platform y se saca un as de la manga.


Si has trabajado con plugins en proyectos de Power Platform o en proyectos de Dynamics, sabrás que hasta ahora era un poco complejo el uso de dependencias externas dentro de los propios plugins. Algo que se podía conseguir haciendo virguerías utilizando ILMerge y que por resumir mucho lo que hacía era combinar la librería del plugin con las librerías dependientes en una sola librería de clases que era la que realmente registrabamos en Plugin Registration Tool.


Bueno pues eso está a punto de pasar a mejor vida. Gracias ILMerge por tu ayuda, pero como se suele decir... que pase el siguiente. Las novedades en el mundo Power Platform, ¡no paran!


La funcionalidad que vamos a ver todavía esta en preview pero mucho me temo que nos va a facilitar la vida enormemente, al permitirnos utilizar librerías externas para utilizarlas en el propio plugin y publicar el paquete resultante (plugin + librerías externas) con Plugin Registration Tool como si de un plugin "normal" se tratase.


Para la prueba de concepto de hoy, que ya te adelanto que va a ser muy sencilla, vamos a trabajar con una librería de clases que simula un wrapper que encapsula todos los servicios web de una compañía. El servicio web que voy a utilizar en este post es un servicio que va a consultar si un contacto que se está dando de alta, forma parte de una lista de morosos. La response de ese servicio web, que me será devuelta desde la libería wrapper, lo vamos a almacenar en la información del propio contacto.


A alto nivel, vamos a construir lo siguiente:


Manos a la obra

Lo primero que necesitas es trabajar con Visual Studio 2019 e instalar la extensión Power Platform Tools. Cuidado que no vas a poder instalar esta extensión en Visual Studio 2022 hasta como mínimo Septiembre de 2022 😉.


Necesitarás también la última versión de Plugin Registration Tool.


Abre Visual Studio y dirígete a Herramientas > Opciones y selecciona Power Platform Tools. Bajo el submenú General, activa la opción que ves en la siguiente imagen.


Ahora, crea un nuevo proyecto de tipo Power Platform Plug-in Library, y añade la referencia Microsoft.CrmSdk.CoreAssemblies. Añade también la referencia a la librería de clases que vayas a utilizar como dependencia adicional.


Escribe el código necesario para ejecutar el plugin. En mi caso, lo que voy a hacer es actualizar el contacto que se está creando con parte de la response del servicio web. No me voy a detener en el código del plugin.



Cuando tengas el código listo para compilarse, compila la solución sobre la que estés trabajando y observa que en el directorio /bin, se ha creado un nuevo directorio que se llama outputPackages. Fíjate que se ha creado un archivo con extensión nupkg. Te invito a que lo descomprimas y mires que hay dentro.




Abre ahora Plugin Registration Tool y conéctate al entorno sobre el que vayas a trabajar. Una vez conectado, haz clic en Register > Register New Package.


Lo único que necesitamos es indicar el paquete a registrar y la solución donde se va a incluir este paquete.


Para visualizar los paquetes registrados, necesitaras seleccionar View > Display by Package.


A partir de aquí, se trata de continuar como si estuvieramos trabajando como con cualquier otro plugin: registrar steps e imagenes si es necesario. En mi caso la configuración queda de la siguiente forma:


Si ahora intento dar de alta un nuevo contacto, el plugin que acabo de registrar consultará el servicio web de morosos y actualizará la información del contacto que acabo de crear.


Como puedes ver... ¡no hay mucho misterio!, y esto nos abre aun más el abanico de posibles funcionalidades a implementar utilizando plugins. ¡Siempre sin perder de vista las limitaciones de la plataforma!


¡Gracias por haber llegado hasta aquí! ¡Nos vemos en el próximo post!

bottom of page