Dynamics crm 2011 导致TypeLoad异常的CRM 2011联机实例的扩展方法
我正在为CRM在线试用租户上的客户编写插件(因此假设它有最新的补丁等),遇到了一个我以前从未见过的错误。一般来说,我总是按照以下思路使用扩展方法,只是为了让代码更清晰:Dynamics crm 2011 导致TypeLoad异常的CRM 2011联机实例的扩展方法,dynamics-crm-2011,extension-methods,typeloadexception,Dynamics Crm 2011,Extension Methods,Typeloadexception,我正在为CRM在线试用租户上的客户编写插件(因此假设它有最新的补丁等),遇到了一个我以前从未见过的错误。一般来说,我总是按照以下思路使用扩展方法,只是为了让代码更清晰: publicstaticvoidaddorupdate(此实体e,字符串propertyName,对象值) { if(如Attributes.Contains(propertyName)) { e、 属性[propertyName]=值; } 其他的 { e、 Add(propertyName,value); } } 我想这没
publicstaticvoidaddorupdate(此实体e,字符串propertyName,对象值)
{
if(如Attributes.Contains(propertyName))
{
e、 属性[propertyName]=值;
}
其他的
{
e、 Add(propertyName,value);
}
}
我想这没什么大争议的吧?无论如何,无论出于何种原因,如果我将类文件作为该客户端插件的一部分,我都会抛出以下错误:
Unhandled Exception: System.ServiceModel.FaultException`1
System.TypeLoadException: Microsoft Dynamics CRM has experienced an error. Reference number for administrators or support: #9A0442A7
[foo.bar.Plugins: foo.bar.Plugins.TrackActivity]
[6ed535ec-c7a8-e211-858f-3c4a92dbdc37: foo.bar.Plugins.TrackActivity: Create of task]
没有包含任何跟踪,这表明插件甚至没有执行(即使第一行代码抛出异常!)
我做了一些挖掘,似乎至少对于这个客户机/实例:
-如果我用任何方法包含一个静态类文件(publicstaticclassfoo
),我就会得到这个错误,不管这个类是否被代码实际使用
-生成错误时,插件本身不会执行(异常发生在任何代码之前)
以前有没有人见过类似的东西,或者对System.TypeLoadException有什么见解?我刚刚用CRM在线试用实例(5.0.9690.3358)试用了这个插件,现在正在运行 插件在创建消息、任务实体、预操作、同步上注册
使用系统;
使用Microsoft.Xrm.Sdk;
命名空间测试插件
{
公共类MyPlugin:IPlugin
{
public void Execute(IServiceProvider服务提供程序)
{
IPluginExecutionContext上下文=(IPluginExecutionContext)serviceProvider.GetService(类型为(IPluginExecutionContext));
if(context.InputParameters.Contains(“目标”)&&context.InputParameters[“目标”]是实体)
{
实体=(实体)上下文。输入参数[“目标”];
if(entity.LogicalName!=“任务”)
返回;
尝试
{
entity.AddOrUpdate(“说明”,“插件更新”);
}
捕获(例外情况除外)
{
抛出新的InvalidPlugineExecutionException(例如消息);
}
}
}
}
公共静态类扩展方法
{
公共静态void AddOrUpdate(此实体e、字符串propertyName、对象值)
{
if(如Attributes.Contains(propertyName))
{
e、 属性[propertyName]=值;
}
其他的
{
e、 Add(propertyName,value);
}
}
}
}
这可以确保问题不是扩展方法
我的最佳猜测(按顺序):
- 解决方案中的一个项目是使用.NET Framework 4.5编译的
- 您正在使用旧的SDK版本
- 您正在使用旧的插件注册工具