MS CRM 2011 插件(plugin)的快速开发 -- 创建模板

如果你开发过很多MS CRM的插件的话,相信你一定会发现,如果每一次开发插件都从头做起的话,你会做很多重复性的工作。如果你发现你每天做着重复性的工作,你就要考虑怎样才能将重复降到最低,理想的情况就是只做一次。

开发CRM的插件(当然要使用Visual Studio)你需要做很多”准备性的工作”,比如添加引用,给插件签名。这些”准备性的工作”也就是重复性的工作,非常浪费时间。一个好的解决办法,就是创建一个你自己的插件模板。在这篇文章中,我为大家介绍两个方面的经验:一是如何建立一个CRM的插件,二是如何在Visual Studio中建立项目模板。

我使用的是">Visual Studio 2010。首先创建一个新的Class Library项目,我们命名它为 mycompany.entity.plugin.template

接下来我们将我们常用到的两个assembly添加到解决方案中,Microsoft.Crm.Sdk.Proxy.dll与Microsoft.Xrm.Sdk.dll。这两个文件,你可以在sdkbin文件夹中找到。

然后我们将这两个assembly添加到引用中。并且还有另外两个引用System.Runtime.Serialization和System.ServiceModel。

接下来,我们需要给插件签名。通常你的公司应该使用统一的签名文件,你可以去问一下你的项目经理。如果他不知道的话,那很遗憾,你们的公司不太正规。你只能自己生成一个签名文件了。

然后我们删除Class1.cs这个文件,创建你自己的类文件,我这里命名它为Plugin.cs,当然你可以命名它为其他你喜欢的文件名。

Plugin.cs的内容如下。不要忘记修改你的命名空间和类名。

using System.Linq; using System.Text; using Microsoft.Xrm.Sdk; using System.ServiceModel; namespace mycompany.entity.plugin.template { public class Plugin : IPlugin { #region IPlugin Members public void Execute(IServiceProvider serviceProvider) { // Obtain the execution context from the service provider. IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext)); // Get a reference to the organization service. IOrganizationService
Factory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory)); IOrganizationService service = factory.CreateOrganizationService(context.UserId); // Get a reference to the tracing service. ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService)); try { if (context.MessageName == "Create") { Entity entity = (Entity)context.InputParameters["Target"]; //********************* //add your code here //********************* } } catch (FaultException<OrganizationServiceFault> ex) { throw new InvalidPluginExecutionException("An error occurred in the plug-in.", ex); } catch (Exception ex) { tracingService.Trace("Error: {0}", ex.ToString()); throw; } } #endregion } }

到这里我们的模板基本上建好了,接下来最关键的一步就是将它导出为模板。File –> Export Template

到这里模板就已经完全建好了。我们检验一下,重新打开Visual Studio,新建项目,你看到了我们的模板项目已经在列表里了。你只需要给出一个新的项目名,其他一切重复性的工作就不用再做了,是不是效率提高了很多?

时间: 2024-08-04 03:52:17

MS CRM 2011 插件(plugin)的快速开发 -- 创建模板的相关文章

MS CRM 2011 在CRM中使用REST Endpoint

CRM提供了两种http://www.aliyun.com/zixun/aggregation/14280.html">WCF Web Service,一个是Organization Service,使用的是SOAP协议,另一个是Organization Data Service,使用的是OData(REST)协议.我们在为CRM写插件(plugin)的时候,通常都要用到第一种web service,而在客户端进行编程的时候就要使用到Organization Data Service了.O

MS CRM 2011 Plugin Unsecure Configuration

在注册CRM插件(plugin)的时候,可以配置unsecure configuration和secure configuration.本文中着重讲解一下Unsecure Configuration的使用. 既然是unsecure的,那么在这里配置的信息,可以被任何人看见并使用.那么如何在plugin中获得unsecure configuration中的字符串呢?我们需要为plugin定义一个构造函数public Plugin(string unsecureConfig) 或者如果你也想使用se

MS CRM 2011 如何获得当前用户使用的界面语言

我在之前的博客中介绍过如何为Microsoft Dynamics CRM 2011 安装语言包,安装了不同的语言包后,用户可以选择使用不同的界面语言.我在本文中介绍一下如何获得当前用户使用的界面语言. (一) 前端 如果是使用JScript获得当前用户使用的界面语言,比如在Form的OnLoad事件处理器中,可以用 context.getUserLcid() 该方法返回一个数字,即为Language ID,比如美国英语是1033,中文简体为2052.完整的Locale ID Values表,大家

MS CRM 2011 用Jscript打开新窗口的几种方法

在CRM中,我们经常遇到这样的情况,点击一个按钮,需要弹出一个新的窗口.比如在客户中添加新联系人: 在MS CRM2011中,有以下几种方法可以打开一个新的窗口: (1) Xrm.Utility.openEntityForm (2) window.open (3) openObj 前两种是在SDK中支持的,尤其推荐使用第一种,但要注意Xrm.Utility这个对象只在Rollup 8以后的版本才支持.这里顺便列出来CRM 2011各个Rollup的版本号: Build VersionRTM: 5

如何使用 MS CRM 2011 中的目标(Goal) -- 第一节

Goal是CRM 2011中的一个新特性.任何新特性都有一个共同点,就是需要学习曲线.下面就让我们看一下,在CRM 2011中如何使用和管理Goal. 我们先通过一个简单的例子来对Goal有一个初步的认识.我们打开一个CRM范例数据中的一个goal记录," Q3 目標 (範例)". &http://www.aliyun.com/zixun/aggregation/37954.html">nbsp; 打开Q3的表单后,可以看到几个重要的数据,Goal Metric

MS CRM 2011 如何获得Option Set的Label与Value

CRM中有一种Field的类型是Option Set.每一个option都是由一对 label + http://www.aliyun.com/zixun/aggregation/9541.html">value组成的.比如我下面图中的Option Set,它的第一个option的Label是Logistic – Incorrect item,而它的value为267060000. 那么CRM SDK为我们提供了哪写方法可以获得一个Option Set 的Label和Value值呢?我在案

MS CRM 2011 剖析Form与Dialog的URL

Microsoft http://www.aliyun.com/zixun/aggregation/4979.html">Dynamics CRM本质上只是一个ASP.Net程序,当然它是一个很厉害的,高手们开发出来的程序.基本上每一个窗口或者对话框都有固定的URL,这些窗口或对话框的特性也是由URL中的query string来决定.也就是说,如果你知道了某个窗口或对话框的URL是什么,你就可以在扩展CRM时,用JScript来打开这个窗口或对话框了. 下面举一个简单的例子来看如何获得一

MS CRM 2011 Quick Find Active View

在CRM中你可以使用快速查找(Quick Find)功能.比如你要在联系人中查找first http://www.aliyun.com/zixun/aggregation/11696.html">name是Adrian的人,你就可以在Search for records的地方键入Adrian,然后点击旁边的小放大镜进行查找. 找到了我们要查找的联系人,但是我们也发现这个视图中的列与之前不一样,这表示当前的视图不再是刚才的Active Contacts视图了. 如果我们查看联系人的定制的话,

MS CRM 2011 实例 -- 添加Connect子选项

项目要求在account和contact上的Connect按钮上添加新的选项,Responsible Partner. 首先创建一个新的solution,包含以下的组成部分: 在Connection中设置表单字定义参数:Form Properties –> Parameters 也可以在XML中定义参数,具体可以参见这一篇文章,或者SDk "Configure a Form to Accept Custom Querystring Parameters".在Form中设置OnLo