COM 표시 클래스 ([ComVisible(true)]
으로 표시되고 RegAsm으로 등록됨)를 C#에서 단위 테스트를 원합니다.
내 어셈블리는 서명되지 않은/약하게 명명 된 dll입니다 (이 상태로 유지해야 함). 테스트 할 클래스에 전용 멤버이 보이지 않습니다. 예외 System.EnterpriesServices.RegistreationException을 던졌다 % MyTestMethod %약한 이름의 COM 표시 클래스를 단위 테스트 할 수있는 방법
시험 방법 : : 나는이 메시지와 함께 실패 시험에서이 클래스의 인스턴스를 할 때 내 문제는 조립을 %하여 MyAssembly %가이 없습니다 강한 이름.
그럼 서명되지 않은/약하게 명명 된 dll에서 단위 테스트 프레임 워크를 어떻게 사용할 수 있습니까?
using System.EnterpriseServices;
using System.Runtime.InteropServices;
[ComVisible(true)]
public class MyComClass: ServicedComponent, IMyClass
{
//SomeAttribute
private MyNonComClass nonCom;
public MyComClass(MyNonComClass _nonCom)
{
this.nonCom = _nonCom;
}
}
단위 테스트는 절대로 [ComVisible] 어셈블리를 등록하려고 시도해서는 안되며, 어떻게 그런 일이 일어 났는지 설명하기위한 이동 경로를 남기지 않았습니다. 프로젝트> 속성> 빌드 탭, "COM interop 등록"체크 상자를 고려하십시오. 서명되지 않은 어셈블리에는 반대하지 않습니다. 그러나 VS가 상승해야한다는 것을 유의하십시오. 사용자 컴퓨터의 GAC에 어셈블리를 배포하지 않는 경우 (강력한 이름이 필요함) 매우 나쁜 생각입니다. 등록은 컴퓨터 전체에서 이루어지기 때문에 COM에는 매우 강력한 DLL 지옥 문제가 있습니다. –
혼란을 드려 죄송합니다. 원래 설명에 몇 가지 힌트가 있기를 바랬습니다. – SzeliTom
ServicedComponent에 대한 MSDN 문서는 "명시 적으로이 클래스를 구성된 COM 구성 요소로 배포하려면 강력한 키를 생성해야합니다" –