При создании системы плагинов с 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, я понятия не имею, как решить эту проблему.
Если я ссылаюсь на сборку плагинов непосредственно в моем главном приложении, все работает как положено - но тогда плагин, очевидно, уже не плагин, а встроенная зависимость моего основного приложения, а не то, что я хочу ...
Кто-нибудь может подсказать, как решить эту проблему?