2010-07-21 2 views
2

StructureMap을 사용하여 런타임에 레지스트리 클래스의 구현이 포함 된 어셈블리를 검사하려고하는데 문제가 발생합니다.StructureMap 2.6.1.0 어셈블리 스캔 문제

dll에 레지스트리 클래스가 있지만 런타임에 존재하지 않는 dll (런타임시 필요하지 않은 Rhino.Mock dll)에 대한 참조가 포함되어있는 경우 StructureMap은 StructureMapConfiguration 예외를 발생시킵니다 Assembly.GetExportedTypes() 호출에서.

StructureMap에서이 동작을 피할 수있는 방법이 있습니까?

ObjectFactory.Initialize(x => 
{ 
    x.Scan(s => 
    { 
     s.AssembliesFromApplicationBaseDirectory(); 
     s.LookForRegistries(); 
    }); 
}); 

답변

1

반사판 통해 제가 발견 graph.Log.AssertFailures() 호출 즉 assembly.GetExportedTypes 것들 중에 발생하는 것들()를 포함한다 (조립 스캔 중에 발생할 수있는 예외 당신이 말하는)은 하나의 큰 예외로 던져집니다. 나는이 행동이 어떻게 든 꺼질 수 있음을 나타내는 어떤 것도 발견하지 못했습니다. 비록 내가 예외를 잡았 더라면 스캐닝이 실제로 스캔 한 모든 어셈블리에서 성공한다는 것입니다. StructureMap은 다음 어셈블리를 계속 수행하는 것 외에는 GetExportedTypes() (프레임 워크 메서드)를 호출 할 때 예외가 throw 될 때 실제로 아무 것도 할 수 없습니다. 만약 당신이 '잃어버린'어떤 어셈블리는 그냥 예외를 잡아 계속 이동 해달라고.

공공 무효 구성 (작업 구성) { 잠금 (이) { ConfigurationExpression 발현 = 새로운 ConfigurationExpression(); configure (expression); PluginGraph graph = expression.BuildGraph(); graph.Log.AssertFailures(); this._interceptorLibrary.ImportFrom (graph.InterceptorLibrary); this._pipelineGraph.ImportFrom (그래프); } }