Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.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
C# AutoMapper System.TypeInitializationException上的CRM自定义工作流错误_C#_Dynamics Crm - Fatal编程技术网

C# AutoMapper System.TypeInitializationException上的CRM自定义工作流错误

C# AutoMapper System.TypeInitializationException上的CRM自定义工作流错误,c#,dynamics-crm,C#,Dynamics Crm,我有一个项目(CRM自定义工作流)在本地工作,但在部署时抛出System.TypeInitializationException 现在,为了澄清我的本地场景,我使用了一个MVC测试工具,其中部署到(在prem上)Msoft Dynamics CRM 2013服务器 拼图的两个重要部分。我正在使用AutoMapper和ilmerge。Ilmerge似乎没有任何联系,但仍想让大家知道 我的项目结构是,客户工作流是解决方案中的一个项目。然后,我在同一个解决方案中有一个核心功能库 因此,我的自定义工作流

我有一个项目(CRM自定义工作流)在本地工作,但在部署时抛出System.TypeInitializationException

现在,为了澄清我的本地场景,我使用了一个MVC测试工具,其中部署到(在prem上)Msoft Dynamics CRM 2013服务器

拼图的两个重要部分。我正在使用AutoMapper和ilmerge。Ilmerge似乎没有任何联系,但仍想让大家知道

我的项目结构是,客户工作流是解决方案中的一个项目。然后,我在同一个解决方案中有一个核心功能库

因此,我的自定义工作流引用了核心库。核心库引用AutoMapper

两个项目都已合并。我的想法/理解是ilmerge将核心库引用(Automapper)构建到单个dll中…而且似乎是这样做的

然后,我在自定义工作流项目中引用该单核心库,并再次使用ilmerge将这两个库(核心库和工作流)合并为一个工作流库

这同样适用于我的本地测试线束,但部署时在第一次引用AutoMapper时失败

因此,在工作流中:

protected override void Execute(CodeActivityContext executionContext)
{
    ....code...
    tracingService.Trace("PreInit");
    CoreCRM.Initialize.Start();
    tracingService.Trace("PostInit");
    .....more code....
}
核心初始化是按如下方式注册映射:

[assembly: PreApplicationStartMethod(typeof(CoreCRM.Initialize), "Start")]
namespace CoreCRM
{

   public class Initialize
   {
      public static void Start()
      {
         Mapper.Initialize(cfg =>
         {
            Assembly.GetExecutingAssembly()
                    .FindAllDerivedTypes<Profile>()
                    .ForEach(match =>
                      {
                         cfg.AddProfile(Activator.CreateInstance(match) as Profile);
                      });
        });
      }
   }
}
我有一个想法…但这是抓救命稻草…也许我的自定义工作流必须引用AutoMapper…但这没有意义

系统事件日志没有显示任何内容。我不知所措,希望您能提供任何指导或意见……即使只是额外的跟踪/调试技术


谢谢你

你确定DLL是在非沙盒模式下注册的吗?虽然CRM是一个web应用程序,但工作流是在一个单独的Windows服务中运行的,所以我认为,
PreApplicationStartMethod
不会起任何作用。我建议在VS中使用一个快速调试会话来捕获异常,这样您就可以看到内部异常-这会给您提供更多详细信息。在VS中进行调试将非常棒…但不确定如何进行。我唯一能想到的就是停止所有CMR服务。如果它是一个工作流,你只需要附加到VS中的异步服务并在CRM中触发工作流。模拟没有帮助,这不是单元测试——更可能的是,自定义代码的操作方式与CRM允许的内容之间存在冲突。
Plugin Trace:

PreInit



Error Message:

Unhandled Exception: Microsoft.Crm.CrmException: Unexpected exception from plug-in 
(Execute): CrmWorkflow: System.TypeInitializationException: The type initializer for 'AutoMapper.QueryableExtensions.Extensions' threw an exception.
at Microsoft.Crm.Sandbox.SandboxCodeUnit.Execute(IExecutionContext context)
at Microsoft.Crm.Workflow.Services.ProxyCustomActivity.Execute(CodeActivityContext executionContext)