Visual Basic 6.0에서 Visual Basic .NET 또는 Visual Basic 2005 어셈블리를 호출하는 방법

기술 자료 번역 기술 자료 번역
기술 자료: 817248 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

이 페이지에서

소개

이 문서에서는 Microsoft Visual Basic .NET 또는 Microsoft Visual Basic 2005를 사용하여 Microsoft Visual Basic 6.0에서 호출할 수 있는 관리되는 어셈블리를 빌드하는 방법을 설명합니다.

추가 정보

COM에 .NET 형식을 노출시키기 위한 지침

Microsoft .NET 어셈블리의 형식을 COM(Component Object Model) 응용 프로그램에 노출시키려면 디자인 타임에 다음 COM interop 요구 사항을 고려해야 합니다. 아래 지침을 준수할 경우 관리되는 형식(클래스, 인터페이스, 구조체, 열거형 등)이 COM 클라이언트 응용 프로그램과 제대로 상호 작용합니다.
  • 인터페이스를 정의하고 클래스에서 해당 인터페이스를 명시적으로 구현합니다. COM interop는 모든 클래스 구성원과 해당 기본 클래스 구성원을 포함하는 인터페이스를 자동으로 생성하는 메커니즘을 제공합니다. 하지만 명시적 인터페이스를 제공하고 해당 인터페이스를 명시적으로 구현하는 것이 가장 좋은 방법입니다.
  • COM에 노출시킬 모든 관리되는 형식을 public으로 선언합니다. 어셈블리의 public 형식만 등록되고 형식 라이브러리로 내보내집니다. 따라서 public 형식만 COM에 표시됩니다.
  • COM에 노출시킬 모든 형식의 구성원(메서드, 속성, 필드 및 이벤트)을 public으로 선언합니다. public 형식의 구성원 또한 public으로 선언해야 COM에 표시됩니다. 기본적으로 모든 public 형식과 구성원은 표시됩니다. COM 클라이언트 응용 프로그램에 노출되는 컨트롤 형식이나 구성원에서 특정 형식이나 구성원을 숨겨야 하는 경우 ComVisibleAttribute 특성을 사용합니다.
  • COM을 통해 인스턴스화하려면 형식에 기본 public 생성자가 있어야 합니다. 관리되는 public 형식은 COM에 표시됩니다. 하지만 기본 public 생성자(인수가 없는 생성자)가 없으면 COM 클라이언트가 해당 형식의 인스턴스를 만들 수 없습니다. 형식이 다른 방식으로 인스턴스화되고 해당 인스턴스가 COM 클라이언트에 반환되는 경우에도 COM 클라이언트는 계속해서 해당 형식을 사용할 수 있습니다. 이러한 형식에 대해 다양한 인수를 사용할 수 있는 오버로드된 생성자를 포함할 수 있습니다. 하지만 인수를 사용할 수 있는 생성자는 관리되는(.NET) 코드에서만 호출할 수 있습니다.
  • 형식은 추상 형식이 될 수 없습니다. COM 클라이언트나 .NET 클라이언트는 모두 추상 형식의 인스턴스를 만들 수 없습니다.
  • Visual Basic .NET 또는 Visual Basic 2005에서는 COMClass 템플릿을 사용합니다. COM 응용 프로그램에 노출시킬 새 클래스를 추가할 때 Visual Basic .NET 또는 Visual Basic 2005에 제공되는 COMClass 템플릿을 사용하도록 고려해 보십시오. COMClass 템플릿은 COMClassAttribute 특성이 포함된 클래스를 만들고, 사용자 형식에 따라 노출되는 CLSID용 GUID, 인터페이스 ID 및 이벤트 ID를 생성합니다. 또한 COMClass 템플릿은 매개 변수 없이 public 생성자를 만듭니다. 이 방법은 호출 가능한 COM 형식을 만드는 지침에 따라 새 클래스를 만드는 가장 쉬운 방법입니다.

COM interop에 .NET 어셈블리 등록 및 형식 라이브러리 만들기

Visual Basic 6.0이 관리되는 구성 요소와 성공적으로 상호 작용하도록 하려면 COM interop에 어셈블리를 등록하고 형식 라이브러리를 생성해야 합니다. COM 클라이언트 응용 프로그램이 어셈블리와 상호 작용하는 모든 컴퓨터에서 이러한 등록을 수행해야 합니다. 형식 라이브러리는 COM 클라이언트 응용 프로그램에 노출된 어셈블리의 형식에 대한 형식 정보를 제공합니다. 이 작업에 대한 프로세스는 개발 컴퓨터에서 작업하는지 또는 대상 컴퓨터에서 작업하는지 여부에 따라 달라집니다.

개발 컴퓨터의 경우 프로젝트의 구성 속성에서 COM Interop 등록 확인란을 선택하면 Microsoft Visual Studio .NET 또는 Microsoft Visual Studio 2005가 자동으로 형식 라이브러리를 만들고 빌드 프로세스에서 해당 라이브러리를 등록합니다. COMClass 템플릿을 사용하여 클래스를 만든 경우 Visual Studio .NET 또는 Visual Studio 2005에서 COM Interop 등록 확인란이 자동으로 선택됩니다. Visual Studio .NET 또는 Visual Studio 2005에서 COM Interop 등록 확인란이 선택되어 있는지 확인하려면 다음과 같이 하십시오.
  1. Visual Studio .NET 또는 Visual Studio 2005를 시작합니다.
  2. COM interop에서 빌드할 프로젝트가 포함된 솔루션을 엽니다.
  3. 보기 메뉴에서 솔루션 탐색기를 누릅니다.
  4. 솔루션 탐색기에서 COM interop에서 빌드할 프로젝트를 마우스 오른쪽 단추로 누른 다음 속성을 누릅니다.
  5. 구성 속성을 누른 다음 빌드 노드를 누릅니다.

    참고?Visual Studio 2005의 경우 왼쪽 창에서 컴파일을 누릅니다.
  6. COM Interop 등록 확인란을 선택합니다. 이 옵션은 클래스 라이브러리 프로젝트에서만 사용할 수 있습니다.
  7. 확인을 눌러 속성 페이지 대화 상자를 닫습니다.
Visual Studio .NET 또는 Visual Studio 2005가 설치되어 있지 않거나 관리되는 어셈블리의 형식 라이브러리(.tlb) 파일을 수동으로 생성하고 등록해야 하는 경우 어셈블리 등록 도구(RegAsm.exe)와 함께 /TLB 스위치를 사용합니다. 관리되는 어셈블리가 전용 어셈블리이고 호스트 프로세스(EXE)와 다른 폴더에 이 어셈블리를 저장하려는 경우 /Codebase 스위치도 함께 사용해야 합니다.

전용 어셈블리는 응용 프로그램과 함께 배포되고 해당 응용 프로그램에만 단독으로 사용됩니다. 다른 응용 프로그램은 전용 어셈블리를 공유하지 않습니다. 전용 어셈블리는 호스트 프로세스(EXE)와 동일한 폴더에 설치되도록 개발되었습니다. 따라서 COM 클라이언트 응용 프로그램의 경우 어셈블리는 해당 응용 프로그램과 동일한 폴더에 있습니다. 공유 어셈블리는 컴퓨터에서 여러 응용 프로그램이 사용할 수 있습니다. 공유 어셈블리를 만들려면 강력한 이름으로 어셈블리를 서명하고 대상 컴퓨터의 전역 어셈블리 캐시(GAC)에 해당 어셈블리를 설치해야 합니다.

강력한 이름으로 어셈블리를 서명하고 전역 어셈블리 캐시(GAC)에 설치하는 방법에 대한 자세한 내용은 다음 Microsoft 웹 사이트를 참조하십시오.
http://msdn2.microsoft.com/en-us/library/xc31ft41(vs.71).aspx(영문)
어셈블리를 등록할 때 /tlb: 스위치와 /Codebase 스위치를 모두 사용해야 합니다. /tlb: 스위치는 형식 라이브러리를 생성하고 등록하며 /Codebase 스위치는 관리되는 어셈블리의 위치를 Windows 레지스트리에 등록합니다. /Codebase 스위치를 사용하지 않으며 어셈블리가 전역 어셈블리 캐시(GAC)에 설치되어 있지 않은 경우, CLR(공용 언어 런타임)으로 어셈블리를 찾을 수 있도록 각 COM 클라이언트 응용 프로그램(EXE)의 폴더에 해당 어셈블리 복사본을 저장해야 합니다.

형식 라이브러리를 생성 및 등록하고 관리되는 어셈블리의 위치를 등록하려면 명령 프롬프트에 다음 명령을 입력합니다.
Regasm AssemblyName.dll /tlb: FileName.tlb /codebase

Visual Basic .NET에서 호출 가능한 COM 어셈블리 만들기

  1. Visual Studio .NET 또는 Visual Studio 2005를 시작합니다.
  2. 파일 메뉴에서 새로 만들기를 가리킨 다음 프로젝트를 누릅니다.
  3. 프로젝트 형식에서 Visual Basic 프로젝트를 누릅니다.

    참고?Visual Studio2005의 경우 프로젝트 형식에서 Visual Basic을 누릅니다.
  4. 템플릿에서 클래스 라이브러리를 누릅니다.
  5. 프로젝트 이름을 TestProj로 지정한 다음 확인을 누릅니다.

    기본적으로 Class1이 만들어집니다.
  6. 보기 메뉴에서 솔루션 탐색기를 누릅니다.
  7. Class1.vb를 마우스 오른쪽 단추로 누른 다음 삭제를 누릅니다. Class1.vb 소스 파일을 삭제할 것인지 물으면 확인을 누릅니다.
  8. 프로젝트 메뉴에서 클래스 추가를 누릅니다.
  9. 템플릿에서 COM 클래스를 누릅니다.
  10. 클래스 이름을 COMClass1.vb로 지정한 다음 열기를 누릅니다.

    다음 코드를 사용하여 COMClass1이 만들어집니다.
    <ComClass(ComClass1.ClassId, ComClass1.InterfaceId, ComClass1.EventsId)> _
    Public Class ComClass1
    
    #Region "COM GUIDs"
        ' These  GUIDs provide the COM identity for this class 
        ' and its COM interfaces. If you change them, existing 
        ' clients will no longer be able to access the class.
        Public Const ClassId As String = "6DB79AF2-F661-44AC-8458-62B06BFDD9E4"
        Public Const InterfaceId As String = "EDED909C-9271-4670-BA32-109AE917B1D7"
        Public Const EventsId As String = "17C731B8-CE61-4B5F-B114-10F3E46153AC"
    #End Region
    
        ' A creatable COM class must have a Public Sub New() 
        ' without parameters. Otherwise, the class will not be 
        ' registered in the COM registry and cannot be created 
        ' through CreateObject.
        Public Sub New()
            MyBase.New()
        End Sub
    
    End Class
  11. COMClass1에 다음 함수를 추가합니다.
       Public Function myFunction() As Integer
          Return 100
       End Function
  12. 솔루션 탐색기에서 프로젝트 이름을 마우스 오른쪽 단추로 누르고 속성을 누릅니다.
  13. 구성 속성에서 빌드를 누릅니다.
  14. COM Interop 등록 확인란이 선택되어 있는지 확인한 다음 확인을 누릅니다.
  15. 빌드 메뉴에서 솔루션 빌드를 눌러 프로젝트를 빌드합니다.
  16. Visual Basic 6.0을 시작합니다.
  17. 파일 메뉴에서 새 프로젝트를 누른 다음 새 프로젝트 대화 상자에서 표준 EXE를 선택합니다.

    기본적으로 Form1이라는 폼이 만들어집니다.
  18. 프로젝트 메뉴에서 참조를 누릅니다.
  19. 사용 가능한 참조 목록에서 TestProj를 두 번 누르고 확인을 누릅니다.
  20. 명령 단추를 폼에 추가합니다.
  21. Command1을 두 번 눌러 코드 창을 엽니다.
  22. 아래 코드를 Command1_Click 이벤트에 추가합니다.
    Dim myObject As TestProj.COMClass1
    Set myObject = New TestProj.COMClass1
    MsgBox myObject.myFunction
  23. 실행 메뉴에서 시작을 누릅니다.
  24. 명령 단추를 누릅니다.

    100이 표시된 메시지가 나타납니다.

참조

자세한 내용을 보려면 다음 Microsoft 웹 사이트를 방문하십시오.
관리되지 않는 코드와 상호 운용
http://msdn.microsoft.com/library/en-us/cpguide/html/cpconinteroperatingwithunmanagedcode.asp(영문)




Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹에 참여하시기 바랍니다.

속성

기술 자료: 817248 - 마지막 검토: 2007년 12월 3일 월요일 - 수정: 6.8
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual Basic 6.0 Enterprise Edition
  • Microsoft Visual Basic 6.0 Learning Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft .NET Framework 2.0
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0
키워드:?
kbhowtomaster kbinterop kbnamespace kbdll kbautomation kbcominterop kbvs2005applies kbvs2005swept KB817248

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com