2010-05-06 4 views
0

약 4000 MbUnit 테스트로 .NET 3.5 어셈블리를 처리했습니다. 나는 문제없이 mbunit.cons.exe 프로그램을 사용하여이 파일들을 실행하고있다.Gallio/MbUnit에서 실행되는 테스트는 실패합니다. 로드 할 수 없습니다 Castle DynamicProxy

이제 Gallio (mbunit.cons.exe가 XML 보고서를 생성 할 때 '메모리 부족'예외로 시작됨)으로 전환하려고합니다. 이카루스의 테스트를 실행하는 경우

, 그들 대부분은 다음과 같은 예외와 함께 실패 : 시험

System.TypeInitializationException: The type initializer for 'Rhino.Mocks.MockRepository' threw an exception. ---> 
System.IO.FileLoadException: Could not load file or assembly 'Castle.DynamicProxy2, Version=2.0.3.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc' or one of its dependencies. 
The located assembly's manifest definition does not match the assembly reference. 
(Exception from HRESULT: 0x80131040) at Rhino.Mocks.MockRepository..cctor()

어셈블리는 동적 프록시를 사용한다. 동적 프록시 어셈블리는 테스트중인 어셈블리와 동일한 디렉토리에 있습니다.

Icarus에서 '힌트 디렉토리', '응용 프로그램 기본 디렉토리'및 '작업 디렉토리'필드에 어셈블리가 포함 된 디렉토리를 넣으려고했지만 결과가 변경되지 않았습니다.

누구나 성공적으로 Gallio와 Dynamic Proxy를 함께 사용 했습니까? 아니면 문제가 무엇인지에 대한 힌트가 있습니까?

답변

0

Rhino.MocksCastle.DynamicProxy2의 다른 버전을 나타냅니다. 그것은 'Castle.DynamicProxy2, Version=2.0.3.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc'을 찾으려고합니다. bin 폴더의 Castle.DynamicProxy2 어셈블리를보고 동일한 버전과 PubliKeyToken이 있는지 확인하십시오.

+0

그거 알아? 네가 옳아! 나는 버전 2.1.0.0을 가지고있다. 하지만 내가 이해할 수없는 것은 어셈블리가 Gbio와는 독립적으로 MbUnit에서 올바르게 작동하는 이유이다. 두 가지 다른 버전의 Dynamic Proxy에 의존하는 두 가지 타사 DLL (Micro Kernel 및 Rhino Mock)을 사용하고 있습니다. 버전이 곧바로 나올 수 있고, 이것이 작동하는지 알기까지 시간이 걸릴 것입니다. 저를 올바른 길로 인도 해 주셔서 감사합니다. – andypaxo

+1

Rhino.Mocks는 ILMerge를 사용하여 DynamicProxy를 내부화합니다. 따라서 소스에서 자신의 복사본을 만들고 병합을 수행하지 않는 한, 설명하는 동작에 놀랐습니다. –

+0

@ 제프 ... 네, 결국 알아 냈습니다. 우리는 Rhino의 병합되지 않은 릴리스를 사용하고있었습니다. 불행하게도, 병합 된 버전은 모든 것을 내부화하지 않았기 때문에 우리는 그 문제도 해결했습니다 (우리 프로젝트는 Castle Windsor를 사용합니다). ILMerge를 실행하여 내재화 된 모든 것이 잘 작동되도록합니다. – andypaxo