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

새 애플리케이션이나 구성 요소를 만들 때는 .NET Framework 어셈블리를 만드는 것이 가장 좋습니다. 그러나 Visual Basic을 사용하면 .NET Framework 구성 요소를 COM에 쉽게 노출할 수도 있습니다. 이를 통해 COM 구성 요소가 필요한 이전 애플리케이션 도구 모음에 새로운 구성 요소를 제공할 수 있습니다. 이 연습에서는 Visual Basic을 사용하여 COM 클래스 템플릿이 있거나 없는 상태에서 .NET Framework 개체를 COM 개체로 노출하는 방법을 보여 줍니다.

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

참고 항목

Visual Basic에서 만든 클래스를 비관리 코드에서 사용할 COM 개체로 노출할 수도 있지만 이는 실제 COM 개체가 아니므로 Visual Basic에서 사용할 수 없습니다. 자세한 내용은 .NET Framework 애플리케이션의 COM 상호 운용성합니다.

참고 항목

일부 Visual Studio 사용자 인터페이스 요소의 경우 다음 지침에 설명된 것과 다른 이름 또는 위치가 시스템에 표시될 수 있습니다. 이러한 요소는 사용하는 Visual Studio 버전 및 설정에 따라 결정됩니다. 자세한 내용은 IDE 개인 설정을 참조하세요.

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 만들기를 클릭합니다. GUID 만들기 대화 상자에서 레지스트리 형식복사를 차례로 클릭합니다. 끝내기를 클릭합니다.

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

    Public Const ClassId As String = "2C8B0AEE-02C9-486e-B809-C780A11530FE"
    
  6. 다음 예와 같이 InterfaceIdEventsId 상수에 대해 이전 단계를 반복합니다.

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

    참고 항목

    GUID가 새롭고 고유한지 확인합니다. 그렇지 않으면 COM 구성 요소가 다른 COM 구성 요소와 충돌할 수 있습니다.

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

    <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 상호 운용성합니다.

참고 항목