Cuando desarrollas un plug-in o un workflow activity, ¿necesitas volver a buscar cómo se estructuran? ¡Olvídalo!
Aquí comparto dos snippets para crear la estructura básica tanto de un plug-in como de un code activity.
¿Cómo son?
Dynamics 365 Code Activity Structure
Este snippet genera la estructura básica de un code activity. Incluye:
- La declaración de la interfaz CodeActivity
- La implementación del Execute
- Dos parámetros de ejemplo (Input y Output)
- La declaración de contexto, tracer, factory y service
- La obtención del parámetro input y el establecimiento del output
public class MyCodeActivity : CodeActivity
{
#region Parameters
[Input("Input Label")]
[RequiredArgument]
[ReferenceTarget("ex_myentity")]
public InArgument<EntityReference> EntityInput { set; get; }
[Output("Output Label")]
public InArgument<bool> OutPut { set; get; }
#endregion Parameters
protected override void Execute (CodeActivityContext executionContext)
{
var context = executionContext.GetExtension<IWorkflowContext>();
var tracer = executionContext.GetExtension<ITracingService>();
var serviceFactory = executionContext.GetExtension<IOrganizationServiceFactory>();
var service = serviceFactory.CreateOrganizationService(context.UserId);
var entityInput = executionContext.GetValue(EntityInput);
// Code activity business logic goes here.
executionContext.SetValue(OutPut, true);
}
}
Dynamics 365 Plug-In Basic Structure
A su vez, este genera la estructura básica de un plug-in. Incluye:
- La declaración de la interfaz IPlugin
- La implementación del Execute
- La declaración de contexto, tracer, factory y service
- El control más común en plug-ins: si se gestiona una entidad o no
public class MyPlugin : IPlugin
{
public void Execute (IServiceProvider serviceProvider)
{
var tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
var context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
var serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
var service = serviceFactory.CreateOrganizationService(context.UserId);
if ( !context.InputParameters.Contains("Target") || !(context.InputParameters["Target"] is Entity) ) return;
// Plug-in business logic goes here.
}
}
¿Cómo se instalan?
Existen dos maneras principalmente:
- Importándolas mediante el gestor de snippets de Visual Studio (Ctrl+K; Ctrl+B)
- Llevando los archivos a la carpeta personal de snippets (%userprofile%\Documents\Visual Studio 2019\Code Snippets\Visual C#\My Code Snippets)
Sobre la primera, el mecanismo es muy intuitivo. Apenas consiste en ver el listado de snippets e importar los interesados. El sistema hará todo por nosotros.
Sobre el segundo, sólo comprueba si la ruta es válida y corresponde a tu versión de Visual Studio. Posteriormente deberá reconocerlo el programa.

¿Cómo se declaran?
Ya en el archivo donde declarar los snippets, bastaría:
- Shortcut Ctrl+K;Ctrl+X para llamar al listado de snippets; buscar la carpeta de los personalizados; seleccionar el deseado y dar dos veces a tab.

- Utilizar los shortcuts de los propios snippets:
- dyplst + dos veces a tabulación para declarar el snippet del plug-in
- dycast + dos veces a tabulación para declarar el snippet del code activity

¡Así de fácil! Sólo falta que lo descargues desde aquí. ¡Que te sea productivo!
One thought on “Plug-In y Code Activity snippets”