2011-03-15 4 views
8

Microsoft DLL (Exchange 웹 서비스)을 참조하는 응용 프로그램이 있습니다. 유닛 테스트에서 Microsoft DLL을 Mock으로 대체하려고합니다.Microsoft DLL 조롱

내가 예외를 얻을로, 다른 DLL이 DLL에 나던 작업과 함께 작동 무엇

나는 그것이 같은이 확인 된 어셈블리 참조를

일치하지 않습니다 위치 어셈블리의 매니페스트 정의 어셈블리 버전이지만 Microsoft DLL이 디지털로 서명되어 PublicKeyToken을 가지고있는 것을 보았습니다. 이것이 내 응용 프로그램에서 찾고있는 것일 수 있습니까? 비슷하게 서명 된 DLL?

publickeytoken을 요구하지 않고 DLL을 참조 할 수 있습니까?

감사합니다.

+1

어떻습니까? msvcr71d.dll이 너무 추해 rundll32.exe에 악성 이미지가 있다고 !!! 권리? 권리? 정말 죄송합니다 ... – diceguyd30

답변

13

서명 된 DLL을 모방 할 수 없습니다. (마피아에 고용 될 수 있다면 ...)

이 DLL의 코드에 액세스하려면 모의 해주십시오.

Exchange dll의 메서드에 대한 액세스를 래핑하는 외면을 만듭니다 (없는 경우). 그런 다음 테스트에서 모의 ​​외관을 제공 할 수 있습니다.

외관/래퍼를 사용하여 제 3 자 코드 (어셈블리, 웹 서비스, 컨트롤)로부터 코드를 보호하는 것이 좋습니다. 이렇게하면 제 3 자 코드가 변경 될 경우 영향 위험이 최소화됩니다. 최신 버전의 dll로 업그레이드 (필요한 변경 사항은 파사드에만 영향을 미침) 및 테스트에 도움이됩니다.

+5

+1 주위에 외관을 작성하는 데 대한 DLL –

+0

예를 들어 PEX는 일부 트릭을 사용하여 시스템 DLL을 조롱 할 수 있습니다. –

+0

@remco - http://research.microsoft.com/en-us/projects/moles/을 말하고 있습니까? –