据我所知,Dynamics CRM工做流的调试方式有几种:服务器
Throw抛出异常错误工具
使用TracingService插件
服务器附加进程调试3d
对于插件有PluginProflier调试
以上几中方式各有优缺点。日志
抛出异常错误:快速查看少许对象值,对于多个对象或调试条件分支,须要不断地试错。对象
使用TracingService:可记录执行过程,须要开启日志监控,不能即时跟踪对象。blog
服务器附加进程:可即时跟踪对象,须要服务器权限并登陆服务器。进程
下面记录下使用本地远程调试的过程ci
工具准备:
Visual Studio 2017
Visual Studio 2017 远程工具
工具下载地址:https://www.visualstudio.com/zh-hans/downloads/
首先,我这里使用SDK的Sample来建立一个自定义工做流活动,记得程序集要签名
而后使用插件注册工具,注册自定义工做流活动
注册类型这里我选择Sandbox
接着在CRM里面自定义一个工做流,在建立完客户以后执行此工做流。
接下来须要在远程服务器运行RemoteDebugger,下载安装完后,在开始里搜索
打开Remote Debugger
这时就能够在客户机使用VisualStudio 附加远程进程了。
打开前面建立的自定义工做流活动项目CustomWFActivity,选择VisualStudio菜单-》调试-》附加到进程,点击查找
弹出防火墙提示,点击容许访问。
这时能够看到远程服务器名称及IP地址
点击该服务器,出现选择按钮。
点击选择,提示输入凭据
若是选择保存凭据
则在控制面板\用户账户\凭据管理器 会保存用户名和密码,下次就再也不须要输入
输入后,稍等一会就会自动加载远程服务器的进程列表
由于注册自定义工做流活动时,注册类型是SandBox,因此这里要选择Sandbox进程,Sandbox进程有两个,选择WorkerProcess,而后点击附加。
附加完进程以后,设置须要调试的断点。
为了触发工做流,这里我新建一个客户,并保存。
稍等片刻,Visual Studio 2017就会自动弹出界面并中断程序。
接下来,就能够监控到程序运行状况了。
到此,远程调试已经完成,这种调试方式的好处在于即时查看对象值及程序执行状况。
对于插件的调试也是同样的,只是监控的进程不同,调试插件监控w3wp进程。
若是注册时,注册类型不是Sandbox,那就须要附加进程到CrmAsyncService.exe进程,但这里有两个同名进程,并且没法区分哪一个是maintenance进程,能够分别尝试或查看服务器端哪一个PID是工做进程
其实,若是服务器可以读取到客户机VisualStudio 的安装目录,就能够直接运行远程调试工具而不用下载。
若是有更好的调试方式,欢迎分享。