2011-01-19 4 views

답변

1

먼저 VisualStudio 옵션 (TextEditor/C# 분기)에서 "고급 멤버 숨기기"를 선택하지 않았는지 확인하십시오. 기본값은 선택 취소되었으므로 그렇게하지 않았습니까?

문제가있는 인터페이스를 직접 선언하고 해당 특성을 생략하면 문제를 해결할 수 있습니다. interop DLL을 생성 한 다음 리플렉터로 볼 수 있어야합니다. COM 선언을 C# 소스 코드로 작성할 수는 있지만 항상 까다로운 경우가 있습니다.

해당 경로로 이동하려면 몇 가지 함정이 있습니다. 특히 반사경은 인터페이스 멤버를 올바른 순서로 표시하지 않습니다. 올바른 순서를 찾으려면 ildasm이나 TLB 뷰어 (VisualStudio에 포함되어 있음)를 사용하십시오. 또한 인터페이스 메소드를 호출하지 않는다면 순서를 유지하기 위해 더미를 선언하고 전체 메소드 서명을 필요로하지 않아도되므로 많은 작업을 줄일 수 있습니다.

+0

예, "고급 멤버 숨기기"가 선택되지 않았으므로 유일한 방법은 인터페이스를 다시 작성하는 것입니다. 내가 언급 한 것을 잊어 버린 점은이 DLL이 tlbimp.exe로 생성되었지만'TypeLibTypeFlags.FHidden'을 억제하는 옵션이없는 것 같습니다. – ide

+1

이제 tlbimp에 대해 언급하면 ​​[TlbImp2] (http://clrinterop.codeplex.com/releases/view/17579)에서 사용할 수있는 소스가 있음을 상기시켜줍니다. 당신은 그것을 수정해야 할 수도 있습니다, 그래서 당신이 할 큰 수입이 있다면 그것은 노력 가치가있다. – Zarat