Dynamics CRM插件开发及调试

Posted 一头野狼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dynamics CRM插件开发及调试相关的知识,希望对你有一定的参考价值。

本文介绍Dynamics CRM插件开发及插件调试

工具:VS2015、Developer Toolkit for Microsoft Dynamics 365、PluginRegistration

需求:我需要用插件开发的方式给客户实体的客户编码字段赋值

步骤一:首先需要下载安装Developer Toolkit for Microsoft Dynamics 365工具,安装完成后在VS中会出现Dynamics 365模板, 在VS中添加Developer Toolkit 路径。

打开 Visual Studio > 工具 > 选项 ,找到Dynamics 365 Developer Toolkit中的Tool Paths,设定好自己的插件注册工具文件路径和CRM SDK的Bin目录,我这里分别设置为 C:\\DynamicsCRM\\SDK2016UR1\\SDK\\Tools\\PluginRegistration 和 C:\\DynamicsCRM\\SDK2016UR1\\SDK\\Bin

 

步骤二:在VS中使用Dynamics 365模板新建项目,具体操作如下截图:

 1.新建解决方案也可以选择第一项,可创建多个类型的项目如插件和工作流。这里只选择插件项目

2.建立与CRM服务器的连接。也可以不用连接,放到后面的PluginRegistration工具连接,我这里主要是使用PluginRegistration工具,这个Developer Toolkit for Microsoft Dynamics 365工具我主要用来建解决方案

3.添加类,编写插件

 

4.这里将代码复制过来(我是参照石头居的博客)

using System;

// Microsoft Dynamics CRM的命名空间之一
using Microsoft.Xrm.Sdk;

namespace Microsoft.Crm.Sdk.Samples
{
    public class AccountNumberPlugin: IPlugin
    {
        public void Execute(IServiceProvider serviceProvider)
        {
            // 获取执行上下文
            IPluginExecutionContext context =

                (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));

            // InputParameters属性包含所有输入参数数据
            if (context.InputParameters.Contains("Target") &&
                context.InputParameters["Target"] is Entity)
            {
                // 从输入参数中获取Target参数
                Entity entity = (Entity)context.InputParameters["Target"];
                //检测输入的Target参数,判断其逻辑名称是否是account.
                if (entity.LogicalName == "account")
                {
                    // 判断客户记录的客户编码字段accountnumber是否有值
                    if (entity.Attributes.Contains("accountnumber") == false)
                    {
                        // 没有客户编码,那么赋一个随机数字
                        Random rndgen = new Random();
                        entity.Attributes.Add("accountnumber", rndgen.Next().ToString());
                    }
                    else
                    {
                        // 抛出一个错误,注意,错误的类型!
                        throw new InvalidPluginExecutionException("The account number can only be set by the system.");
                    }                    
                }
            }
        }
    }
}

 5.添加签名  右键解决方案>属性

 

 5.创建完成之后重新生成一下解决方案

 6.用pluginsRegistration工具进行注册。工具位置在SDK>Tools文件夹中。先注册项目然后新建步骤。

 

 

7.完成。看一下运行的效果看看插件是否生效

步骤三:插件调试  写的代码没有生效或者是出错,需要进行插件的调试

1.打开pluginRegistration工具安装分析器 profiler

 

 

2.选中要调试的插件,step,点击Start Profiling

 

3.去CRM中操作实体,下载日志文件

 

 

 4.回到插件注册器关掉profiling

 

5.点击Debug

 

6.到VS2015,设置断点,附加PluginRegistration进程

 

 7.再回到插件工具点击执行

 

8.这时就会看到断点生效,进行调试

 

以上是关于Dynamics CRM插件开发及调试的主要内容,如果未能解决你的问题,请参考以下文章

Dynamics CRM 远程调试自定义工作流活动

如何通过 Dynamics 365 CRM 中的 C# 插件填充查找字段

外部SQL Server的Dynamics CRM 365插件

Dynamics CRM2013 6.1.1.1143版本插件注册器的一个bug

Dynamics CRM-标识联系人是否已在PreContactUpdate插件中合并

Dynamics CRM - 创建插件以将新的逻辑运算符添加到高级查找中