Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dynamics crm 2011 导致TypeLoad异常的CRM 2011联机实例的扩展方法_Dynamics Crm 2011_Extension Methods_Typeloadexception - Fatal编程技术网

Dynamics crm 2011 导致TypeLoad异常的CRM 2011联机实例的扩展方法

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); } } 我想这没

我正在为CRM在线试用租户上的客户编写插件(因此假设它有最新的补丁等),遇到了一个我以前从未见过的错误。一般来说,我总是按照以下思路使用扩展方法,只是为了让代码更清晰:

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版本
  • 您正在使用旧的插件注册工具

客户服务器上的CRM 2011内部部署(2008 R2)也存在同样的问题。幸运的是,我们不必回到.NET 4.0-在服务器上手动安装4.5修复了该问题。希望CRM online很快就能更新。

是的,这一点很好。根据.NET4(而不是4.5)编译,运行良好。谢谢