2013-05-06 6 views
0

Castle Windsor WCF Integration Facility를 DDD 아키텍처로 사용하는 프로젝트를 개발합니다. 단일 컨테이너 프로젝트, 단일 도메인 프로젝트, 여러 구현 프로젝트 및 실행 콘솔이 있습니다. 종속성 트리 아래와 같이 표시 할 수 있습니다 :Castle Windsor WCF Facility가 코드 최적화 또는 full-pdb가 비활성화 될 때 릴리스 모드에서 작동하지 않습니다.

콘솔 (EXE) -> 컨테이너 (윈저) -> {구현 -> DomainInterfaces}

콘솔 프로젝트가 Container.Bootstrapper.Initialize을 (호출)와 성 설치 프로그램이 어셈블리를 검색 이 방법에서. 디버그 모드에서는 성공적으로 작동하고 윈저는 모든 종속성을로드하고 WCF 서비스를 만듭니다. 커서가 Initialize에 들어가면 Modules 창에서 새로로드 된 모듈을 볼 수 있습니다.

의존성 설치 코드는 다음과 같다 :

public void Install(IWindsorContainer container, IConfigurationStore store) 
{ 
    container = new WindsorContainer().AddFacility<WcfFacility>() 
    .Register 
    (
     Component.For<IDataProvider>().Instance(new DataProvider(s_DataConfigurationElement)).LifeStyle.Singleton, 
     Component.For<IUserRepository>().ImplementedBy<UserRepository>().LifeStyle.Singleton, 
     Component.For<IDomainManager>().ImplementedBy<DomainManager>().LifeStyle.Singleton, 
     Component.For<IGateway>().ImplementedBy<Gateway>().LifeStyle.PerThread.AsWcfService() 
    ); 
} 

문제 박리 모드에있다. 이 메서드에 중단 점을 설정할 수 없으며 설치 관리자가 작동하지 않아 모듈 창에 아무 것도로드되지 않았습니다. 릴리스 모드에서는 코드 최적화가 선택되지 않았고 Console 프로젝트의 프로젝트 옵션에서 full-pdb 디버그 정보가 선택되어있는 경우에만 작동합니다. 알려진 문제입니까, 버그입니까?

미리 감사드립니다.

+0

. 귀하의 DLL의 내용을 Ildasm과 점검하십시오. – Marwijn

+0

당신은 어떤 dll을 검사해야합니까? EXE 또는 컨테이너 또는 구현을 말해 줄 수 있습니까? –

+0

위의 설치 기능이 포함 된 dll을 확인하십시오. NLog를 사용하여 로깅 라인을 삽입 할 수도 있습니다. (코드가 멀리 떨어져 있으면 문제가 없어 질 수도 있습니다.) – Marwijn

답변

2

절대container 매개 변수를 설치 프로그램 클래스에 재 지정해야합니다. 그것은 나를 위해 수수께끼이며, 그것은 DEBUG 모드에서 작동했습니다.

대신을 시도

내가 모듈을로드하는 코드가 더 이상 그들을 데리러되도록 설치에 대한 코드 멀리 최적화되지 않도록 이미지 수
public void Install(IWindsorContainer container, IConfigurationStore store) { 
    container.AddFacility<WcfFacility>(); 
    container.Register(
     Component.For<IDataProvider>().Instance(new DataProvider(s_DataConfigurationElement)), 
     Component.For<IUserRepository>().ImplementedBy<UserRepository>(), 
     Component.For<IDomainManager>().ImplementedBy<DomainManager>(), 
     Component.For<IGateway>().ImplementedBy<Gateway>().AsWcfService()); 
} 
+0

네 말이 맞다. 나는 보지 못했지만 효과가 없다. 문제의 원인이 귀하의 요점 인 경우, 디버그 모드에서도 작동하지 않습니다. –