Теперь, чтобы прояснить мой локальный сценарий, я использую тестовый пакет MVC, в котором развертывание должно выполняться. (локальный) сервер Msoft Dynamics CRM 2013.
Две важные части головоломки. Я использую AutoMapper и ilmerge. Ilmerge, похоже, никак не связан с этим, но все же хотел сообщить об этом.
Структура моего проекта такова, что рабочий процесс клиента представляет собой один проект в решении. Затем в том же решении у меня есть библиотека основных функций.
Поэтому мой пользовательский рабочий процесс ссылается на базовую библиотеку. Базовая библиотека ссылается на AutoMapper.
ОБА проекта имеют ilmerge. Моя мысль/понимание заключалась в том, что ilmerge объединит ссылки на основные библиотеки (Automapper) в одну DLL... и, похоже, так и есть.
Затем я ссылаюсь на эту единственную основную библиотеку в проекте пользовательского рабочего процесса. и снова с помощью ilmerge объедините две библиотеки (основную библиотеку и рабочий процесс) в одну библиотеку рабочих процессов.
Опять же, это работает из моего локального тестового пакета, но при развертывании происходит сбой при первом обращении к AutoMapper.< /p>
Итак, в рабочем процессе:
Код: Выделить всё
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
()
.ForEach(match =>
{
cfg.AddProfile(Activator.CreateInstance(match) as Profile);
});
});
}
}
}
Ошибка и полный стек:
Код: Выделить всё
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)
Журнал системных событий ничего не показывает. Что я могу попробовать дальше? Я открыт для любых дополнительных методов трассировки/отладки.
Подробнее здесь: https://stackoverflow.com/questions/301 ... nexception