类型加载异常。 Microsoft Dynamics CRM 遇到错误

TypeLoad Exception. Microsoft Dynamics CRM has experienced an error

在我们的 CRM 2013 Online 生产实例之一中,我们在 ajax 调用的 (POST) 错误处理程序 (XHR.responseText) 中收到以下错误:

"error": { "code":“-2147220970”,"message":{ "lang": "en-US", "value": "System.TypeLoadException: Microsoft Dynamics CRM has experienced an error. Reference number for administrators or support: #0EBC6CBF" } } }

有问题的 .NET 插件代码在我们安装了 SP1 UR2 的 2013 内部部署开发实例上运行良好。我也检查了版本号,在线生产实例和本地开发实例都设置为6.1.2.112版本。

插件代码是用 C# 编写的,并作为程序集部署在 Dynamics CRM 上。由于这种情况发生在 CRM Online 上,我担心我无法调试代码或跟踪代码?

检查您的插件中是否使用了任何外部类型(引用的程序集),因为在线安装不支持这些类型,但如果它们由 GAC 提供,则可以在内部运行。

您可能还在尝试执行需要完全信任的操作,而沙盒插件不支持该操作。

您可能正在插件的静态构造函数中执行 Assembly.Load 调用,这在沙盒模式下不可用,而沙盒模式正是 CRM Online 所要求的。

编辑:

我会与 Microsoft 一起创建一个支持案例并提供参考编号,您将能够查看哪个参考实际失效。

最后我在导致 System.TypeLoadException Dynamics 异常的插件代码中找到了罪魁祸首 - Extension Method仅限 CRM 2013 在线版。

    public static bool IsEqualTo<TSource>(this IEnumerable<TSource> value, IEnumerable<TSource> compareList)
    {
        return IsEqualTo(value, compareList, null);
    }

插件删除后成功启动。

扩展方法在 Dynamics CRM 2013 On-Premises 和 Dynamics CRM 2015 Online 和 On-premise(在沙盒模式下)上运行完美。

由于这是一个庞大的代码库,多亏了 VS2013 中的依赖关系图功能,它通过一个一个地删除 类 帮助我找到了它。