Castle Windsor 3.1缺失方法例外

时间:2012-12-20 10:07:07

标签: c# unit-testing nunit castle-windsor

尝试从测试程序集中安装所有单独的安装程序,不断抛出

 "`{"Method not found: 'Castle.MicroKernel.Registration.ComponentRegistration1<!0> Castle.MicroKernel.Registration.ComponentRegistration1.DependsOn(Castle.MicroKernel.Registration.Dependency)'."}`" 

尽管代码从Console应用程序/ Windsows服务运行完美,但两个项目的引用完全相同:

Castle.Core
Castle.Facilities.FactorySupport
Castle.Facilities.Logging
Castle.Facilities.QuartzIntegration
Castle.Services.Logging.NLogIntegration
Castle.Windsor

有没有人知道为什么测试程序集如此调用windsor容器的构建:

   this.Container = new WindsorContainer(new XmlInterpreter())
       .Install(FromAssembly.Named("Assembly.WindowsService", 
                new CustomWindsorInstallerFactory()));

在引用“DependsOn”方法的任何代码上失败,例如:

container.Register(
    Component
         .For<ISftpRepository, ISftpFileStoreRepository, AbstractSftpFileStoreRepository>()
         .ImplementedBy<ConcreteSftpRepository>()
         .Properties(PropertyFilter.IgnoreAll)
         .DependsOn(
              Dependency.OnConfigValue("host", config.Host),

或:

.ConfigureFor<QuartzJob>(
      x => 
      x.DependsOn(ServiceOverride.ForKey<IService>().Eq("intraService")))

注意:请注意所有安装类在主应用程序下运行时都能正常工作,这在运行单元测试时纯粹是一种情境。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

看起来你在某个地方有一个旧版本的Windsor,在部署

时会覆盖新版本