Como usar o Castle.Windsor em uma montagem carregada usando reflexão
Digamos que eu tenho uma biblioteca Lib.dll, que usa o Castle.Windsor para inicializar seus serviço
Eu tenho um aplicativo principal App.exe, que carrega o Lib.dll no tempo de execução usando reflexão. App.exe não sabe a localização do Lib.dll de antemão, é conhecido apenas em tempo de execuçã
Nesse caso, quando o App.exe carrega o Lib.dll e o Lib.dll inicializa seus serviços, é lançada uma exceção System.TypeInitializationException, porque o Castle.Windsor não pode encontrar o tipo de serviç
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
Aparentemente, o Castle não consegue encontrar minha classe de serviço porque está no Lib.dll que não está localizado no diretório do App.exe. Quando copio o Lib.dll para o diretório App.exe, o problema desaparece, mas ter que copiar isso não é algo que queremo
Então, como meu código no Lib.dll diz ao Castle.Windsor para carregar a classe no local correto? (no local Lib.dll em vez de no local App.exe)