연습: Visual Basic을 사용하여 COM 개체 만들기

업데이트: 2007년 11월

새 응용 프로그램이나 구성 요소를 만들 경우 .NET Framework 어셈블리를 만드는 것이 가장 좋습니다. 그러나 Visual Basic에서는 .NET Framework 구성 요소를 COM에 쉽게 노출할 수도 있습니다. 이렇게 하면 COM 구성 요소가 필요한 이전 응용 프로그램 제품군에 대한 새 구성 요소를 제공할 수 있습니다. 이 연습에서는 COM 클래스 템플릿을 사용하거나 사용하지 않고서 Visual Basic을 통해 .NET Framework 개체를 COM 개체로 노출하는 방법을 보여 줍니다.

COM 개체를 노출하는 가장 쉬운 방법은 COM 클래스 템플릿을 사용하는 것입니다. COM 클래스 템플릿은 새 클래스를 만든 다음 프로젝트를 구성하여 클래스 및 상호 운용성 계층을 COM 개체로서 생성하고 운영 체제에 등록합니다.

참고:

Visual Basic에서 만든 클래스를 COM 개체로 노출하여 비관리 코드에서 사용할 수도 있지만 이 개체는 진정한 COM 개체가 아니며 Visual Basic에서 사용할 수 없습니다. 자세한 내용은 .NET Framework 응용 프로그램의 COM 상호 운용성을 참조하십시오.

참고:

실제 설정이나 버전에 따라서 화면에 나타나는 대화 상자와 메뉴 명령이 도움말의 설명과 다를 수 있습니다. 설정을 변경하려면 도구 메뉴에서 설정 가져오기 및 내보내기를 클릭합니다. 자세한 내용은 Visual Studio 설정을 참조하십시오.

COM 클래스 템플릿을 사용하여 COM 개체를 만들려면

  1. 파일 메뉴에서 새 프로젝트를 클릭하여 새 Windows 응용 프로그램 프로젝트를 엽니다.

  2. 새 프로젝트 대화 상자의 프로젝트 형식 필드에서 Windows가 선택되었는지 확인합니다. 템플릿 목록에서 클래스 라이브러리를 선택한 다음 확인을 클릭합니다. 새 프로젝트가 표시됩니다.

  3. 프로젝트 메뉴에서 새 항목 추가를 선택합니다. 새 항목 추가 대화 상자가 표시됩니다.

  4. 템플릿 목록에서 COM 클래스를 선택한 다음 추가를 클릭합니다. Visual Basic은 새 클래스를 추가하고 COM interop에 맞게 새 프로젝트를 구성합니다.

  5. 속성, 메서드 및 이벤트와 같은 코드를 COM 클래스에 추가합니다.

  6. 빌드 메뉴에서 ClassLibrary1 빌드를 선택합니다. Visual Basic은 어셈블리를 빌드하고 COM 개체를 운영 체제에 등록합니다.

COM 클래스 템플릿을 사용하지 않고 COM 개체 만들기

COM 클래스 템플릿을 사용하지 않고 수동으로 COM 클래스를 만들 수 있습니다. 이는 명령줄에서 작업하거나 COM 개체를 정의하는 방법을 보다 자세하게 제어하려는 경우에 유용한 방법입니다.

COM 개체를 생성하여 프로젝트를 설정하려면

  1. 파일 메뉴에서 새프로젝트를 클릭하여 새 Windows 응용 프로그램 프로젝트를 엽니다.

  2. 새 프로젝트 대화 상자의 프로젝트 형식 필드에서 Windows가 선택되었는지 확인합니다. 템플릿 목록에서 클래스 라이브러리를 선택한 다음 확인을 클릭합니다. 새 프로젝트가 표시됩니다.

  3. 솔루션 탐색기에서 프로젝트를 오른쪽 마우스 단추로 클릭하고 속성을 클릭합니다. 프로젝트 디자이너가 표시됩니다.

  4. 컴파일 탭을 클릭합니다.

  5. COM Interop 등록 확인란을 선택합니다.

클래스에 코드를 설정하여 COM 개체를 만들려면

  1. 솔루션 탐색기에서 Class1.vb를 두 번 클릭하여 해당 코드를 표시합니다.

  2. 클래스 이름을 ComClass1으로 바꿉니다.

  3. 다음 상수를 ComClass1에 추가합니다. 이러한 상수는 COM 개체가 가져야 하는 GUID(Globally Unique Identifier) 상수를 저장합니다.

    Public Const ClassId As String = ""
    Public Const InterfaceId As String = ""
    Public Const EventsId As String = ""
    
  4. GUID(Globally Unique Identifier)를 얻으려면 Guidgen.exe를 시작하여 Guidgen 유틸리티를 시작합니다. Guidgen 응용 프로그램에서 제공되는 형식 목록에서 Registry Format을 선택합니다. 새 GUID 단추를 클릭하여 GUID를 생성한 다음 복사 단추를 클릭하여 GUID를 클립보드에 복사합니다.

  5. ClassId에 대한 빈 문자열을 GUID로 바꾸고 선행 및 후행 중괄호를 제거합니다. 예를 들어, Guidgen에 의해 제공된 GUID가 "{2C8B0AEE-02C9-486e-B809-C780A11530FE}"일 경우 코드는 다음과 같아야 합니다.

    Public Const ClassId As String = "2C8B0AEE-02C9-486e-B809-C780A11530FE"
    
  6. 다음 예제에 나온 것처럼 InterfaceId 및 EventsId 상수에 대한 이전 단계를 반복합니다.

    Public Const InterfaceId As String = "3D8B5BA4-FB8C-5ff8-8468-11BF6BD5CF91"
    Public Const EventsId As String = "2B691787-6ED7-401e-90A4-B3B9C0360E31"
    
    참고:

    GUID가 새 것이며 고유한지 확인합니다. 그렇지 않을 경우 COM 구성 요소가 다른 COM 구성 요소와 충돌할 수 있습니다.

  7. 다음 예제와 같이 ComClass 특성을 ComClass1에 추가하여 클래스 ID, 인터페이스 ID 및 이벤트 ID에 대한 GUID를 지정합니다.

    <ComClass(ComClass1.ClassId, ComClass1.InterfaceId, ComClass1.EventsId)> _
    Public Class ComClass1
    
  8. COM 클래스에는 매개 변수 없는 Public Sub New() 생성자가 있어야 합니다. 그렇지 않으면 클래스가 올바르게 등록되지 않습니다. 매개 변수 없는 생성자를 클래스에 추가합니다.

    Public Sub New()
        MyBase.New()
    End Sub
    
  9. 속성, 메서드 및 이벤트를 클래스에 추가하고 클래스를 End Class 문으로 종료합니다. 빌드 메뉴에서 솔루션 빌드를 선택합니다. Visual Basic은 어셈블리를 빌드하고 COM 개체를 운영 체제에 등록합니다.

    참고:

    Visual Basic에서 생성한 COM 개체는 진정한 COM 개체가 아니기 때문에 다른 Visual Basic 응용 프로그램에서 사용할 수 없습니다. 해당 COM 개체에 참조를 추가하면 오류가 발생합니다. 자세한 내용은 .NET Framework 응용 프로그램의 COM 상호 운용성을 참조하십시오.

참고 항목

작업

연습: COM 개체를 사용한 상속 구현

상호 운용성 문제 해결

참조

ComClassAttribute 클래스

#Region 지시문

기타 리소스

COM Interop

.NET Framework 응용 프로그램의 COM 상호 운용성