dynamics_generate_plugin_project
Generate a complete C# plugin project structure for Microsoft Dynamics CRM with .csproj files, classes, and configured plugins for specific entities and events.
Instructions
Gera a estrutura completa de um projeto de plugin C# (.csproj, classes, etc.)
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| projectName | Yes | Nome do projeto | |
| namespace | Yes | Namespace do projeto | |
| plugins | Yes | Lista de plugins a serem gerados |
Implementation Reference
- src/tools/plugins/index.ts:312-350 (handler)Handler implementation for "dynamics_generate_plugin_project" tool which generates a C# plugin project structure, including the .csproj file and associated plugin classes using templates.
server.tool( "dynamics_generate_plugin_project", "Gera a estrutura completa de um projeto de plugin C# (.csproj, classes, etc.)", z.object({ projectName: z.string().describe("Nome do projeto"), namespace: z.string().describe("Namespace do projeto"), plugins: z.array(CreatePluginSchema).describe("Lista de plugins a serem gerados"), }).shape, async (params: { projectName: string; namespace: string; plugins: z.infer<typeof CreatePluginSchema>[] }) => { const csproj = PLUGIN_TEMPLATES.csproj .replace(/{{PROJECT_NAME}}/g, params.projectName) .replace(/{{NAMESPACE}}/g, params.namespace); const pluginFiles: string[] = []; for (const plugin of params.plugins) { const stageValue = STAGE_MAP[plugin.stage] || 40; const code = PLUGIN_TEMPLATES.standard .replace(/{{NAMESPACE}}/g, params.namespace) .replace(/{{CLASS_NAME}}/g, plugin.name) .replace(/{{ENTITY_LOGICAL_NAME}}/g, plugin.entityLogicalName) .replace(/{{MESSAGE}}/g, plugin.message) .replace(/{{STAGE}}/g, String(stageValue)) .replace(/{{EXECUTION_MODE}}/g, plugin.executionMode === "Synchronous" ? "0" : "1") .replace(/{{FILTERING_ATTRIBUTES}}/g, plugin.filteringAttributes || "") .replace(/{{DESCRIPTION}}/g, plugin.description || `Plugin ${plugin.name}`) .replace(/{{BUSINESS_LOGIC}}/g, plugin.businessLogic || "// TODO: Implement business logic"); pluginFiles.push(`// File: ${plugin.name}.cs\n${code}`); } return { content: [ { type: "text" as const, text: `Projeto gerado: **${params.projectName}**\n\n## ${params.projectName}.csproj\n\`\`\`xml\n${csproj}\n\`\`\`\n\n## Plugins\n${pluginFiles.map((f) => `\`\`\`csharp\n${f}\n\`\`\``).join("\n\n")}`, }, ], }; } );