Как использовать Castle.Windsor в сборке, загруженной с использованием отражения
Допустим, у меня есть библиотека Lib.dll, которая использует Castle.Windsor для инициализации своих служб.
У меня есть основное приложение App.exe, которое загружает Lib.dll во время выполнения, используя отражение. App.exe не знает заранее местоположение Lib.dll, это известно только во время выполнения.
В этом случае, когда App.exe загружает Lib.dll и Lib.dll инициализирует свои службы, выдается исключение System.TypeInitializationException, поскольку Castle.Windsor не может найти тип службы.
Castle.MicroKernel.SubSystems.Conversion.ConverterException: Could not convert from 'Lib.TheServiceClass' to System.Type - Maybe type could not be found
at Castle.MicroKernel.SubSystems.Conversion.TypeNameConverter.PerformConversion(String value, Type targetType) in e:\OSS.Code\Castle.Windsor\src\Castle.Windsor\MicroKernel\SubSystems\Conversion\TypeNameConverter.cs:line 91
at Castle.MicroKernel.SubSystems.Conversion.DefaultConversionManager.PerformConversion(String value, Type targetType) in e:\OSS.Code\Castle.Windsor\src\Castle.Windsor\MicroKernel\SubSystems\Conversion\DefaultConversionManager.cs:line 134
at Castle.MicroKernel.SubSystems.Conversion.DefaultConversionManager.PerformConversion[TTarget](String value) in e:\OSS.Code\Castle.Windsor\src\Castle.Windsor\MicroKernel\SubSystems\Conversion\DefaultConversionManager.cs:line 162
at Castle.Windsor.Installer.DefaultComponentInstaller.SetUpComponents(IConfiguration[] configurations, IWindsorContainer container, IConversionManager converter) in e:\OSS.Code\Castle.Windsor\src\Castle.Windsor\Windsor\Installer\DefaultComponentInstaller.cs:line 196
at Castle.Windsor.Installer.DefaultComponentInstaller.SetUp(IWindsorContainer container, IConfigurationStore store) in e:\OSS.Code\Castle.Windsor\src\Castle.Windsor\Windsor\Installer\DefaultComponentInstaller.cs:line 52
at Castle.Windsor.WindsorContainer.Install(IWindsorInstaller[] installers, DefaultComponentInstaller scope) in e:\OSS.Code\Castle.Windsor\src\Castle.Windsor\Windsor\WindsorContainer.cs:line 327
at Castle.Windsor.WindsorContainer.Install(IWindsorInstaller[] installers) in e:\OSS.Code\Castle.Windsor\src\Castle.Windsor\Windsor\WindsorContainer.cs:line 674
Очевидно, Castle не может найти мой класс обслуживания, потому что он находится в Lib.dll, который не находится в каталоге App.exe. Когда я копирую Lib.dll в каталог App.exe, проблема исчезает, но нам не нужно копировать ее.
Итак, как мой код в Lib.dll может указать Castle.Windsor загрузить класс в правильном месте? (в папке Lib.dll, а не в папке App.exe)