FileLoadException от ComponentActivator при разрешении зарегистрированного класса - PullRequest
0 голосов
/ 20 апреля 2020

При создании системы плагинов с Castle Windsor я использую функцию

IWindsorContainer.Register(Classes.FromAssemblyInDirectory(...).BasedOn(IMyInterface))

.

Мое главное приложение (в которое должны быть подключены компоненты) ссылается на Castle Windsor 5.0.1 через NuGet.

Одна плагин-сборка, которая реализует IMyInterface, также напрямую ссылается на Castle Windsor 5.0.1, плюс еще один пакет NuGet, для которого сам требуется Castle Windsor 4.0.0 (или выше).

Когда я Теперь попробуйте разрешить объект IMyInterface из контейнера, который я получаю Castle.MicroKernel.ComponentActivator.ComponentActivatorException: ComponentActivator: could not instantiate MyInterfaceImplementaionClass, со вторым внутренним исключением, сообщающим мне: FileLoadException: Не удалось загрузить файл или сборку 'Castle.Windsor, Version = 4.0. 0.0, Культура = нейтральный, PublicKeyToken = 407dd0808d44fbd c 'или одна из его зависимостей. Определение манифеста обнаруженной сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)

Поскольку у меня нет (прямого) контроля над тем, на какие сборки ссылаются некоторые пакеты NuGet, я понятия не имею, как решить эту проблему.

Если я ссылаюсь на сборку плагинов непосредственно в моем главном приложении, все работает как положено - но тогда плагин, очевидно, уже не плагин, а встроенная зависимость моего основного приложения, а не то, что я хочу ...

Кто-нибудь может подсказать, как решить эту проблему?

...