새 애플리케이션 또는 구성 요소를 만들 때 .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 개체를 만들려면
새 프로젝트를 클릭하여 파일 메뉴에서 새 Windows 애플리케이션 프로젝트를 엽니다.
프로젝트 형식 필드 아래의 새 프로젝트 대화 상자에서 Windows가 선택되어 있는지 확인합니다. 템플릿 목록에서 클래스 라이브러리를 선택한 다음 확인을 클릭합니다. 새 프로젝트가 표시됩니다.
프로젝트 메뉴에서 새 항목 추가를 선택합니다. 새 항목 추가 대화 상자가 표시됩니다.
템플릿 목록에서 COM 클래스를 선택한 다음 추가를 클릭합니다. Visual Basic은 새 클래스를 추가하고 COM interop에 대한 새 프로젝트를 구성합니다.
COM 클래스에 속성, 메서드 및 이벤트와 같은 코드를 추가합니다.
빌드 메뉴에서 Build ClassLibrary1을 선택합니다. Visual Basic은 어셈블리를 빌드하고 COM 개체를 운영 체제에 등록합니다.
COM 클래스 템플릿 없이 COM 개체 만들기
COM 클래스 템플릿을 사용하는 대신 수동으로 COM 클래스를 만들 수도 있습니다. 이 절차는 명령줄에서 작업하거나 COM 개체 정의 방법을 더 자세히 제어하려는 경우에 유용합니다.
COM 개체를 생성하도록 프로젝트를 설정하려면
NewProject를 클릭하여 파일 메뉴에서 새 Windows 애플리케이션 프로젝트를 엽니다.
프로젝트 형식 필드 아래의 새 프로젝트 대화 상자에서 Windows가 선택되어 있는지 확인합니다. 템플릿 목록에서 클래스 라이브러리를 선택한 다음 확인을 클릭합니다. 새 프로젝트가 표시됩니다.
솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭한 다음 속성을 클릭합니다. 프로젝트 디자이너가 표시됩니다.
컴파일 탭을 클릭합니다.
COM Interop에 대한 등록 확인란을 선택합니다.
COM 개체를 만들 클래스의 코드를 설정하려면
솔루션 탐색기에서 Class1.vb 두 번 클릭하여 해당 코드를 표시합니다.
클래스 이름을 .로
ComClass1
바꿉니다.에 다음 상수를 추가합니다
ComClass1
. COM 개체에 필요한 GUID(Globally Unique Identifier) 상수가 저장됩니다.Public Const ClassId As String = "" Public Const InterfaceId As String = "" Public Const EventsId As String = ""
도구 메뉴에서 Guid 만들기를 클릭합니다. GUID 만들기 대화 상자에서 레지스트리 형식을 클릭한 다음 복사를 클릭합니다. 끝내기를 클릭합니다.
빈 문자열을
ClassId
GUID로 바꾸고 선행 및 후행 중괄호를 제거합니다. 예를 들어 Guidgen에서 제공하는 GUID가"{2C8B0AEE-02C9-486e-B809-C780A11530FE}"
인 경우, 코드는 다음과 같이 표시되어야 합니다.Public Const ClassId As String = "2C8B0AEE-02C9-486e-B809-C780A11530FE"
다음 예제와 같이
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 구성 요소와 충돌할 수 있습니다.
특성을
ComClass
에 추가하고, 다음 예제와 같이 클래스 ID, 인터페이스 ID 및 이벤트 ID에 대한 GUID를ComClass1
에 지정합니다.<ComClass(ComClass1.ClassId, ComClass1.InterfaceId, ComClass1.EventsId)> Public Class ComClass1
COM 클래스에는 매개 변수가 없는
Public Sub New()
생성자가 있어야 합니다. 그렇지 않으면 클래스가 올바르게 등록되지 않습니다. 클래스에 매개 변수가 없는 생성자를 추가합니다.Public Sub New() MyBase.New() End Sub
클래스에 속성, 메서드 및 이벤트를 추가하여 문으로
End Class
종료합니다. 빌드 메뉴에서 솔루션 빌드를 선택합니다. Visual Basic은 어셈블리를 빌드하고 COM 개체를 운영 체제에 등록합니다.비고
Visual Basic을 사용하여 생성하는 COM 개체는 TRUE COM 개체가 아니므로 다른 Visual Basic 애플리케이션에서 사용할 수 없습니다. 이러한 COM 개체에 대한 참조를 추가하려고 하면 오류가 발생합니다. 자세한 내용은 .NET Framework 애플리케이션의 COM 상호 운용성을 참조하세요.
참고하십시오
.NET