Unity не может разрешить объект и выкинул 'System.IO.FileNotFoundException' - PullRequest
0 голосов
/ 06 февраля 2020

Использование Unity в проекте (Unity 4.0.1)

При настройке Unity у меня есть

container.RegisterLeadDeliveryProvider<YardiPopcardProvider>(VendorTaskType.YardiPopcard);

Где RegisterLeadDeliveryProvider:

public static IUnityContainer RegisterLeadDeliveryProvider<TProvider>(this IUnityContainer container, VendorTaskType type)
        where TProvider : ILeadDeliveryProvider<IBrandConfiguration>
{
    return container.RegisterType<ILeadDeliveryProvider<IBrandConfiguration>, TProvider>(type.ToString());
}

После этого Я сделал

var type = VendorTaskType.YardiPopcard.ToString();
var isRegistered = container.IsRegistered<ILeadDeliveryProvider<IBrandConfiguration>>(type);

isRegustered == правда. Итак, зарегистрирован провайдер. Но, если я использую

var obj = container.Resolve<ILeadDeliveryProvider<IBrandConfiguration>>(type);

Объект всегда равен нулю. Предположительно, это должен быть YardiPopcardProvider.

Если отладить его, он показывает: obj сгенерировал исключение типа 'System.IO.FileNotFoundException'. Сообщение: Не удается загрузить сборку «D: \ ....... ScheduledTask.YardiPopcard.dll». Тем не менее, файл DLL там. Не уверен, почему у него есть это исключение.

Структура решения:

EXEConsole

YardiPopcardProvider

Unity ......

Проект Unity имеет контейнер Unity и регистрирует все объекты. Проект EXEConsole получает контейнер, затем разрешает объект ProviderTask. В объекте ProviderTask все, что он делает, это разрешает YardiPopcardProvider.

Я могу подтвердить, что ScheduledTask.YardiPopcard.dll находится в папке EXEConsole и Unity.

Кто-нибудь знает, как я могу это исправить? Спасибо

1 Ответ

0 голосов
/ 07 февраля 2020

Некоторые из причин, которые могут вызвать это:

  • Ваша dll требует другой dll, которая отсутствует.
  • Ваша dll - x64, а проект - x86 или наоборот ,
  • Ваша dll помечена как заблокированная из-за загрузки из inte rnet.
  • Ваша dll скомпилирована для фреймворка, отличного от проекта.
  • Ваш проект запущен как пользователь, который не имеет доступа к DLL.
...