추가 기능 프로젝트의 구성 요소
Visual Studio의 추가 기능은 Visual Studio 2013에서 사용되지 않습니다. 추가 기능을 VSPackage 확장으로 업그레이드하는 것이 좋습니다. 업그레이드에 대한 자세한 내용은 FAQ: VSPackage 확장으로 추가 기능 변환 을 참조하십시오.
추가 기능 프로젝트는 추가 기능 마법사를 사용하여 만들고 DLL로 컴파일되는 클래스 라이브러리 프로젝트입니다. 추가 기능 프로젝트에는 Connect라는 소스 코드 파일이 포함되며 이는 클래스의 이름이기도 합니다. Connect 클래스는 추가 기능과 Visual Studio IDE(통합 개발 환경) 사이에 명령을 전달하는 IDTExtensibility2라는 인터페이스를 구현합니다.
IDTExtensibility2에는 구현 시 이벤트로 사용되는 다섯 가지 메서드가 있습니다.
방법 |
설명 |
---|---|
이 메서드는 추가 기능을 Visual Studio에 로드할 때 호출됩니다. |
|
이 메서드는 Visual Studio에서 로드를 마칠 때 호출됩니다. |
|
이 메서드는 Visual Studio에서 추가 기능을 로드하거나 언로드할 때 호출됩니다. |
|
이 메서드는 Visual Studio를 닫을 때 호출됩니다. |
|
이 메서드는 추가 기능을 Visual Studio에서 언로드할 때 호출됩니다. |
추가 기능 마법사를 사용하여 추가 기능을 만들 때 사용자 인터페이스 옵션을 선택하면 IDTExtensibility2 인터페이스 이외에 IDTCommandTarget 인터페이스가 자동으로 구현됩니다. 추가 기능에서 명령 모음을 만들거나 조작하려면 Microsoft.VisualStudio.CommandBars 네임스페이스도 구현해야 합니다.
OnConnection 메서드
OnConnection 메서드는 추가 기능 프로젝트에 사용되는 가장 중요한 메서드입니다. 이 메서드는 추가 기능을 로드할 때마다 호출됩니다. 또한 이 메서드는 추가 기능의 다른 자동화 코드를 호출하는 데 사용됩니다. OnConnection 메서드에는 Application, ConnectMode, AddInInst 및 custom이라는 네 개의 매개 변수가 전달됩니다. Application은 Visual Studio IDE를 나타냅니다. 이는 _applicationObject라는 이름의 DTE2 개체로 캐스팅됩니다. 이 개체는 핵심 자동화 모델의 주 개체를 나타내며 해당 형식과 멤버 모두에 대한 액세스를 제공합니다. ConnectMode는 추가 기능을 로드하는 방식 즉, 명령줄을 통해 로드하거나 솔루션을 열어 로드하는 등의 방식을 지정합니다. 이 매개 변수의 값은 Extensibility.extConnectMode에 포함됩니다. AddInInst는 추가 기능 자체를 나타냅니다. custom 매개 변수는 데이터를 추가 기능에 선택적으로 전달하는 데 사용할 수 있는 배열입니다.
이러한 변수를 초기화할 뿐만 아니라 OnConnection에는 추가 기능 마법사를 사용하여 추가 기능을 만들 때 해당 옵션을 선택한 경우 도구 메뉴에서 추가 기능의 명령을 만드는 데 필요한 코드가 들어 있습니다.
기타 추가 기능 메서드
추가 기능 마법사가 작성해 주는 나머지 네 개의 추가 기능 메서드는 기본적으로 비어 있습니다. 추가 기능 관련 이벤트를 처리해야 하는 경우 이러한 메서드를 사용하여 이벤트에 응답할 수 있습니다. 예를 들어, 추가 기능을 닫을 때 다른 프로시저에 알림 메시지를 보내는 코드를 OnAddInsUpdate 메서드에 추가할 수 있습니다. OnBeginShutdown을 호출하면 Visual Studio IDE가 종료될 때 정리 작업을 수행할 수 있습니다.
추가 기능을 만들고 "추가 기능에 사용할 명령 모음 UI를 만드시겠습니까?" 옵션(도구 메뉴에서 추가 기능에 대한 명령을 만드는 옵션)을 선택하면 IDTCommandTarget 인터페이스가 구현됩니다. 다른 두 메서드인 QueryStatus 및 Exec는 명령 작업을 처리하기 위해 추가 기능 프로젝트에 추가됩니다. 이러한 메서드에는 도구 메뉴에 명령을 배치하고 사용자가 마우스 단추를 클릭할 때 응답하기 위한 약간의 코드가 포함되어 있습니다. QueryStatus 는 명령을 사용할 수 있는지 여부를 추가 기능에 알립니다. Exec 메서드는 사용자가 도구 메뉴에서 추가 기능 명령을 클릭한 경우에 호출됩니다. 즉, 해당 이벤트에 응답하려면 이 메서드에 코드를 추가해야 합니다.