Ошибки пользовательского рабочего процесса CRM в AutoMapper System.TypeInitializationExceptionC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Ошибки пользовательского рабочего процесса CRM в AutoMapper System.TypeInitializationException

Сообщение Anonymous »

У меня есть проект (пользовательский рабочий процесс CRM), который работает локально, но при развертывании выдает исключение System.TypeInitializationException.
Теперь, чтобы прояснить мой локальный сценарий, я использую тестовый пакет 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);
});
});
}
}
}
Я использую PreApplicationStartMethod, поскольку CRM — это веб-решение, и ошибка возникает из Start(), поэтому мне кажется, что это работает.
Ошибка и полный стек:

Код: Выделить всё

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)
У меня была одна мысль (но она хваталась за соломинку): возможно, мой собственный рабочий процесс должен ссылаться на AutoMapper... но это не имеет смысла.
Журнал системных событий ничего не показывает. Что я могу попробовать дальше? Я открыт для любых дополнительных методов трассировки/отладки.

Подробнее здесь: https://stackoverflow.com/questions/301 ... nexception
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»