Image 自定义插件无法执行--需要一些基本理解方面的帮助

Image 自定义插件无法执行--需要一些基本理解方面的帮助,image,plugins,deployment,dynamics-crm-2011,Image,Plugins,Deployment,Dynamics Crm 2011,我是CRM新手,我创建了一个新的自动编号插件(实际上修改了一个现有的插件) 我在让这个插件在CRM端工作时遇到问题 我已经创建了插件,并且创建了一个创建步骤。我对图像的创建感到困惑,以及我需要如何去做 另外,我正在使用localContext.Trace,我不确定在哪里查看这些信息 有谁能帮助我理解实现这个插件需要遵循的确切步骤吗。我会在这里包括我的代码,以防我做错了什么。同样,这是一个工作插件,我只是修改了它。我试图遵循前一个开发人员使用的模式 仅供参考--我购买了CRM Solution M

我是CRM新手,我创建了一个新的自动编号插件(实际上修改了一个现有的插件)

我在让这个插件在CRM端工作时遇到问题

我已经创建了插件,并且创建了一个创建步骤。我对图像的创建感到困惑,以及我需要如何去做

另外,我正在使用localContext.Trace,我不确定在哪里查看这些信息

有谁能帮助我理解实现这个插件需要遵循的确切步骤吗。我会在这里包括我的代码,以防我做错了什么。同样,这是一个工作插件,我只是修改了它。我试图遵循前一个开发人员使用的模式

仅供参考--我购买了CRM Solution Manager实用程序来帮助部署过程,但仍然没有任何运气

提前感谢您抽出时间

这是密码

使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
使用IccPlugin.proxyClass;
使用IccPlugin.ProxyClasses.ProxyClasses;
使用Microsoft.Xrm.Sdk;
使用Microsoft.Xrm.Sdk.Query;
名称空间IccPlugin{
公共类ProgramReportAutoNumber:插件库{
私有只读字符串imageAlias=“ProgramReport”;
私有新_程序报告前映像{get;set;}
私有新_程序报告后映像{get;set;}
私有新_programreport targetEntity{get;set;}
私有只读字符串imageAlias_program=“program”;
私有新_程序预映像_程序{get;set;}
私有新_程序postImage_程序{get;set;}
私有新_程序targetEntity_程序{get;set;}
公共程序报告自动编号(字符串不安全,字符串安全)
:base(typeof(ProgramReportAutoNumber)、不安全、安全){
Add(新元组((int)CrmPluginStepStage.PreOperation,“创建”,“新程序报告”,新操作(执行));
//Add(新元组((int)CrmPluginStepStage.PostOperation,“更新”,“新程序报告”,新操作(执行));
//Add(新元组((int)CrmPluginStepStage.PostOperation,“Delete”,“new_programreport”,new Action(Execute));
}
受保护的void Execute(localpluginotext localContext){
if(localContext==null){
抛出新ArgumentNullException(“localContext”);
}
IPluginExecutionContext context=localContext.PluginExecutionContext;
if(context.PreEntityImages.Contains(imageAlias)&&(context.PreEntityImages[imageAlias]是实体)){
preImage=new_programreport((实体)context.PreEntityImages[imageAlias]);
}
if(context.PostEntityImages.Contains(imageAlias)&&(context.PostEntityImages[imageAlias]是实体)){
postImage=new_programreport((实体)context.PostEntityImages[imageAlias]);
}
if(context.PreEntityImages.Contains(imageAlias_程序)和&(context.PreEntityImages[imageAlias_程序]是实体)){
preImage_program=new-new_program((实体)context.PreEntityImages[imageAlias_program]);
}
if(context.PostEntityImages.Contains(imageAlias_程序)和&(context.PostEntityImages[imageAlias_程序]是实体)){
postImage_程序=新建程序((实体)上下文.PostEntityImages[imageAlias_程序]);
}
if(context.InputParameters.Contains(“目标”)&&(context.InputParameters[“目标”]是实体)){
targetEntity=new_programreport((实体)context.InputParameters[“Target”]);
}
开关(context.MessageName){
案例“创建”:
HandleCreate(localContext);
打破
案例“更新”:
HandleUpdate(本地上下文);
打破
案例“删除”:
HandleDelete(本地上下文);
打破
违约:
抛出新的ArgumentException(“无效的消息名称:+context.MessageName”);
}
}
私有void HandleDelete(LocalPluginContext localContext){
Trace(“START-IccPlugin.ProgramReport.AutoNumber.HandleDelete”);
试一试{
如果(预映像==null){
抛出新异常(“IccPlugin.ProgramReport.AutoNumber.HandleDelete:前映像为null,无法处理删除消息”);
}
//TODO:在此处添加代码以实现删除消息。
}捕获(例外情况除外){
localContext.Trace(String.Format(“IccPlugin.ProgramReport.AutoNumber.HandleDelete:处理删除消息时异常,错误消息:{0}”,ex.message),ex);
掷骰子;
}最后{
Trace(“END-IccPlugin.ProgramReport.AutoNumber.HandleDelete”);
}
返回;
}
私有void HandleUpdate(LocalPluginContext localContext){
Trace(“START-IccPlugin.ProgramReport.AutoNumber.HandleUpdate”);
如果(预映像==null){
string msg=“IccPlugin.ProgramReport.AutoNumber.HandleUpdate:更新步骤未正确注册。无法使用alias”+imageAlias检索操作前图像;
localContext.Trace(msg);
抛出新异常(msg);
}
if(positmage==null){
string msg=“IccPlugin.ProgramReport.AutoNumber.HandleUpdate:更新步骤未正确注册。无法使用alias”+imageAlias检索操作后图像;
localContext.Trace(msg);
抛出新的例外