OLE 자동화를위한 클래스 라이브러리를 작성하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/127440

문제

Excel 애드 인이있어 너무 많은 클래스 모듈을 추가하여 이제는 매우 부피가 커집니다. MS Office Suite의 다른 앱에 대해 재사용 할 수 있도록 유형 라이브러리 또는 COM 패키지로 변환하고 싶습니다.

클래스 라이브러리 프로젝트로 Visual Studio에 추가 기능을 포팅했지만 Excel Automation은 컴파일 된 .dll 파일의 클래스를 인식하지 못합니다. 직관적으로 나는 매니페스트, 인터페이스 또는 내 코드에 그와 비슷한 것이 필요하다고 생각합니다.

OLE 자동화에 사용하기 위해 클래스의 방법과 속성을 노출시키기 위해 무엇을 알아야합니까?

도움이 되었습니까?

해결책

나는 당신이 문구 manifest를 사용했기 때문에, 당신은 vs 6.0에 비해 .NET 개발 플랫폼 vs2003, vs2005 또는 vs2008을 사용 하여이 DLL을 조립하고 있다고 가정합니다.

이것 링크 COM 구성 요소로 사용하기 위해 .NET 어셈블리를 등록하는 데 필요한 상세한 단계 세트를 제공합니다.

기사가 내가 일상적으로 언급하지 않는 한 가지는 내 자신의지도를 만드는 것입니다. 도구 메뉴에서 안내 항목 만들기를 사용한 다음 COM에 노출하려는 클래스, 인터페이스 및 열거 위에 삽입하십시오.

[Guid("3838ADC1-E901-4003-BD0C-A889A7CF25A1")]
public interface IMyCOMClass  {
    void MyMethod(); 
}

[Guid("476BDEB6-B933-4ed5-8B86-7D9330A59356"),
ClassInterface(ClassInterfaceType.None)]
public class MyCOMClass : IMyCOMClass {
    public void MyMethod() { 
        //implementation here
    }
}

두 번째는 클래스에서 구현 한 Com 부분에 별도의 인터페이스를 사용하는 것입니다. 이를 수행 한 추론은 인터페이스가 변경 될 때 COM의 파괴 성과 관련이 있습니다.

이것이 도움이되기를 바랍니다, 빌.

다른 팁

(.NET 프로젝트라고 가정)

인터페이스와 클래스에 안내서를 추가 해야하는 것 외에도 전체 어셈블리를 표시하지 않는 한 Comvisible 속성으로 표시해야합니다. 또한 관리되지 않는 클라이언트를 참조하기 위해 메타 데이터를 COM 유형으로 내보내기 위해 tlbexp.exe를 사용해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top