本文介紹Dynamics CRM插件開發及插件調試服務器
工具:VS201五、Developer Toolkit for Microsoft Dynamics 36五、PluginRegistrationdom
需求:我須要用插件開發的方式給客戶實體的客戶編碼字段賦值ide
步驟一:首先須要下載安裝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模板新建項目,具體操做以下截圖:spa
1.新建解決方案也能夠選擇第一項,可建立多個類型的項目如插件和工做流。這裏只選擇插件項目插件
2.創建與CRM服務器的鏈接。也能夠不用鏈接,放到後面的PluginRegistration工具鏈接,我這裏主要是使用PluginRegistration工具,這個Developer Toolkit for Microsoft Dynamics 365工具我主要用來建解決方案3d
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.這時就會看到斷點生效,進行調試