微软动态CRM专家罗勇 ,回复319或者20190319可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me 。

本文主要根据官方的教程 Tutorial: Debug a plug-in 而写,使用的环境是我自己搭建在Azure VM中的,版本为 版本 1612 (9.0.2.3034) (DB 9.0.2.3034) (本地) 。

最近开始我的博文使用的Dynamics 365 Customer Engagement版本都不再使用V8.2版本,而会使用V9.X版本。插件程序集需要引用 Microsoft.CrmSdk.CoreAssemblies 这个NuGet包的最新版本,当然针对的.NET Framework 也要变化,使用的版本是 4.6.2版本,若还没有下载,可以去 .NET SDKs for Visual Studio 下载 .NET Framework 4.6.2 Develper Pack 安装即可。

根据 Tutorial: Write and register a plug-in ,我注册个简单的插件,代码很简单,如下:

using System;
using System.Security.Cryptography;
using System.ServiceModel;
using Microsoft.Xrm.Sdk;namespace CRM.Plugins
{public class PreWorkOrderCreate : IPlugin{public void Execute(IServiceProvider serviceProvider){ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService));IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity){Entity currentEntity = (Entity)context.InputParameters["Target"];IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);try{var rng = new RNGCryptoServiceProvider();byte[] data = new byte[100000];int seed = BitConverter.ToInt32(data, 0);var rand = new Random(seed);currentEntity["ly_autonum"] = rand.Next(1, 100000).ToString("000000");}catch (FaultException<OrganizationServiceFault> ex){throw new InvalidPluginExecutionException("An error occurred in PreWorkOrderCreate.", ex);}catch (Exception ex){tracingService.Trace("PreWorkOrderCreate unexpected exception: {0}", ex.Message);throw;}}}}
}

这里贴两个注册插件的截图:因为我自己搭建的OP V9.0环境注册插件报错,所以我用CRM Online来完成本博文的,报错信息如下:此插件程序集使用了版本 4.6.2 的 .NET Framework。目前,Microsoft Dynamics 365 要求插件程序集使用版本 4.5.2 的 .NET Framework。请使用 .NET Framework 版本 4.5.2 重新生成此程序集,然后重试。

特别说明,本地部署版本注册插件报错的问题在 Microsoft Dynamics 365 Server v9.0 (on-premises) Update 0.3 中解决了。

然后我测试下插件代码基本有效。

下面开始讲述如何调试插件。首先点击插件注册工具上的【Install Profiler】安装,我安装失败,报错如下,原来是我这个用户虽然有系统管理员角色,但是其【Access Mode】为Administration,所以会缺少很多权限。将这个用户在Office 365 Admin Portal中授予其Dynamics 365 Customer Engagement的许可(License)稍等一会儿待该用户的【Access Mode】变成Read-Write后重新点击插件注册工具上的【Install Profiler】按钮即可。

Microsoft.Crm.CrmSecurityException: SecLib::CheckPrivilege failed. User: 28eafdf4-363a-e911-a9ae-000d3a1ad5ea, PrivilegeName: prvCreateContractTemplate, PrivilegeId: d6cd0451-bca1-42b0-9ffd-5596a3b9a8f9, Required Depth: Basic, BusinessUnitId: 5d2366b2-3b1d-e911-a9b1-000d3a1adfba, MetadataCache Privileges Count: 3998, User Privileges Count: 555 ---&gt; Microsoft.Crm.CrmSecurityException: SecLib::CheckPrivilege failed. User: 28eafdf4-363a-e911-a9ae-000d3a1ad5ea, PrivilegeName: prvCreateContractTemplate, PrivilegeId: d6cd0451-bca1-42b0-9ffd-5596a3b9a8f9, Required Depth: Basic, BusinessUnitId: 5d2366b2-3b1d-e911-a9b1-000d3a1adfba, MetadataCache Privileges Count: 3998, User Privileges Count: 555

然后选中我要调试的插件步骤,然后点击 【Start Profiling】这个菜单项

保持不变,直接点击 【OK】按钮。

【Start Profiling】成功的话可以看到这个插件步骤后面多了【Profiled】,然后我要触发这个插件的执行,我这里就简单,创建一条【工单】记录就可以。然后点击 【Stop Profiling】按钮停止Profile,Stop Profiling成功的话,这个插件步骤后面多了的【Profiled】字眼会消失。

在选中要调试的插件步骤的前提下,点击 【Debug】按钮。

在弹出的对话框中,点击Profile 文本框旁边的向下按钮,会弹出【Select Profile From CRM】窗口,选择合适的记录(每次记录成功的Profile都有一条记录,所以可能会出来多条,根据Created和Type Name选择合适的)后点击【Select】按钮。

然后选择合适的【Assembly Location】和【Plugin】,也就是插件编译的程序集。

然后在Visual Studio对插件的代码设置好断点,再点击【Debug】 > 【Attach to Process】,在弹出的如下【Attach to Process】框中,找到名称为【PluginRegistration.exe】的Process (前面步骤的截图中已经告知了这个Process 的ID为16700,刚好对上),点击【Attach】后。点击前面步骤截图中的【Start Execution】按钮。

可以看到下图,击中断点,你可以尽情调试拉。

转载于:https://www.cnblogs.com/luoyong0201/p/Dynamics_365_Debug_Plugin.html

Dynamics 365 Customer Engagement中插件的调试相关推荐

  1. 【转】Dynamics 365 Customer Engagement中插件的调试

    微软动态CRM专家罗勇 ,回复319或者20190319可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . 本文主要根据官方的教 ...

  2. 【转】Dynamics 365中配置和使用文件夹级别的跟踪(folder-level tracking)

    本人微信和易信公众号:微软动态CRM专家罗勇 ,回复274或者20180630可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong.me ...

  3. 【转】!Dynamics 365 Online通过OAuth 2 Client Credential授权(Server-to-Server Authentication)后调用Web API

    微软动态CRM专家罗勇 ,回复332或者20190505可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me! 本文很多内容来自 John Towgood 撰写的Dynamic ...

  4. 【转】Dynamics 365中开发和注册插件介绍

    是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面的 ...

  5. 【转】Dynamics 365中的应用程序介绍

    本人微信和易信公众号:微软动态CRM专家罗勇 ,回复275或者20180630可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong.me ...

  6. Dynamics 365中的应用程序介绍

    本人微信和易信公众号:微软动态CRM专家罗勇 ,回复275或者20180630可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong.me ...

  7. 介绍Dynamics 365的OrgDBOrgSettings工具

    摘要: 微软动态CRM专家罗勇 ,回复320或者20190320可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . 有时候会需要 ...

  8. Dynamics 365本地部署版本配置OAuth 2 Password Grant以调用Web API

    微软动态CRM专家罗勇 ,回复330或者20190504可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me! 根据官方建议,不要再使用Dynamics 365 Custome ...

  9. 解读 --- 基于微软企业商务应用平台 (Microsoft Dynamics 365) 之上的人工智能 (AI) 解决方案...

    9月25日微软今年一年一度的Ignite 2017在佛罗里达州奥兰多市还是如期开幕了.为啥这么说?因为9月初五级飓风厄玛(Hurricane Irma) 在佛罗里达州登陆,在当地造成了挺大的麻烦.在这 ...

最新文章

  1. delphi中try的用法1
  2. 解决Android 加载大图片OOM
  3. 为什么CRM Opportunity的删除会触发一个通向BW系统的RFC
  4. 关于如何在PSA众多请求号中查找数据是属于哪一条。
  5. matlab如何提高运算速速,如何提高以下程序的运算速度及有选择性的保存数据?...
  6. 微软 azure_Microsoft Azure,我们迁移数据的第一步
  7. flume http source示例讲解
  8. BZOJ2431:[HAOI2009]逆序对数列(DP,差分)
  9. 智慧城市——数字化城市管理平台系统建设方案
  10. 文件和文档的比较工具
  11. Excel计算函数(计算机二级)
  12. 无人机——像素坐标系转世界坐标系(NED)
  13. javascript 操作coolie
  14. 熊出没机器人光头强_熊出没:光头强除了3个真名,还有6个外号,第4个最让人心酸...
  15. 不知如何选股?不知哪种指标策略可靠?量化分析比较DMA、DMI、MACD、KDJ、BOLL指标策略收益情况
  16. json csrf html5,Exploiting JSON CSRF
  17. 古月居 ROS 入门21讲--PA18 tf坐标系广播与监听的编程实现笔记
  18. 海贼王热血航线正在连接服务器,航海王热血航线访问频繁进不去解决方法_航海王热血航线访问频繁怎么回事|微安卓...
  19. 大漠找图算法_大漠找图怎么实现用资源表图片找的?(不用写出的方法)
  20. Type ‘java.util.Observable‘ does not have type parameters

热门文章

  1. spring整合xfire
  2. [C/CPP系列知识] C++中extern “C” name mangling -- Name Mangling and extern “C” in C++
  3. mysql存储过程判断多个条件语句_存储过程里多条件判断(SQL组合查询)
  4. SCOM 常识概念—与其他SC产品集成
  5. linux学习笔记(三):文件系统结构
  6. 调用cryptography密码学API接口计算SHA256/SHA1哈希摘要
  7. 如何开发Web3D游戏
  8. Windows和Linux内存检测工具:Valgrind,Visual Leak Detector,CppCheck, Cpplint
  9. Doris之备份与恢复(全面)
  10. Maven的核心概念