2012-02-04 1 views
9

에서 설치 프로그램을 찾을 수 없습니다 : 내가 Global.asax에를 디버깅 할 때성 윈저 내 global.axax에 코드를 어셈블리

protected void Application_Start() 
{ 
    WindsorContainer = new WindsorContainer(); 
    WindsorContainer.Install(FromAssembly.InDirectory(new AssemblyFilter(AppDomain.CurrentDomain.RelativeSearchPath))); 
    ControllerBuilder.Current.SetControllerFactory(new WindsorControllerFactory(WindsorContainer.Kernel)); 
//... 
} 

은, 코드 FromAssembly.InDirectory(newAssemblyFilter(AppDomain.CurrentDomain.RelativeSearchPath)) 발견 내 모든 프로젝트 DLL의 (7 DLL의가있다). 그 중 3은 예를 들어 IWindsorInstaller 인터페이스의 구현이 포함되어

class WindsorInstaller : IWindsorInstaller 
{ 
    public void Install(IWindsorContainer container, IConfigurationStore store) 
    { 
     var services = AllTypes.FromThisAssembly().Where(type => type.Name.EndsWith("Service")); 
     container.Register(services 
      .WithService.DefaultInterfaces() 
      .Configure(c => c.LifestyleTransient())); 
     container.Register(Component.For<ISession>().ImplementedBy<AspnetSession>(). 
      LifeStyle.Transient); 
     container.Register(Component.For<ICache>().ImplementedBy<AspnetCache>(). 
      LifeStyle.Transient); 
    } 
} 

을하지만 중단 점을 설정할 때, 그것은이라고 만 1 설치, 다른 2 생략했다입니다. 재미 있긴하지만 코드에서 복사 한 코드가 있습니다.

답변

14

설치 프로그램 클래스는 공개되어야합니다. 현재 설치 관리자 클래스에는 액세스 한정자가 없으므로 기본값은 internal -이며 Windsor는 볼 수 없습니다. 캐슬 문서에서는 여기에 이것을 지정합니다 : http://stw.castleproject.org/Windsor.Installers.ashx.

+0

오 마이 갓! 너무 바보 같은 실수 :) 큰 감사합니다! –

+4

항상 우리 모두에게 일어납니다. :) – Marijn