2008-09-24 4 views
0

나는 많은 부류의 모듈을 추가하는 Excel 부가 기능을 가지고있어 매우 부피가 커졌습니다. 형식 라이브러리 나 COM 패키지로 변환하여 MS Office 제품군의 다른 응용 프로그램에서 다시 사용할 수 있습니다.OLE 자동화 용 클래스 라이브러리를 작성하는 방법은 무엇입니까?

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

OLE 자동화에서 사용하기 위해 클래스의 메서드와 속성을 표시하려면 무엇을 알아야합니까? 당신이 문구 매니페스트 사용하기 때문에

답변

1

나는 가정하고, 당신이 .NET 개발 플랫폼 VS2003, VS2005 또는 VS2008를 사용하여이 DLL을 조립하는 것은 VS에 비해 6.0

link가 필요한 단계에 대한 자세한 세트를 제공합니다 COM 구성 요소로 사용할 .NET 어셈블리를 등록하십시오.

내가 정기적으로 언급하지 않는 한 가지 점은 내 GUID를 만드는 것입니다. 도구 메뉴의 GUID 만들기 항목을 사용하여 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의 손상 가능성과 관련이 있습니다.

호프가 도움이 되었으면 좋겠다. 빌. (당신이 가지고있는 전체 어셈블리를 표시 한 경우 제외)

1

사용자 인터페이스와 클래스에 GUID를 추가 할 필요 게다가

(그것은 .NET 프로젝트를있어 가정), 당신은 또한 대해 ComVisible 특성으로 그들을 표시해야 . 또한 tlbexp.exe를 사용하여 관리되지 않는 클라이언트에서 참조하기 위해 COM 형식 라이브러리로 메타 데이터를 내 보내야합니다.

관련 문제