다음을 통해 공유


자동화를 사용 하 여 연습: Visual Studio SDK에 호출

이 연습에서는 Visual Studio 추가-Visual Studio 서비스를 사용 하는 만드는 방법을 보여 줍니다. 만들에서 서비스 공급자를 가져옵니다 및 사용 하 여 서비스를 얻을 수 있습니다. 모든 proffered Visual Studio 서비스를 받으려면이 같은 기술을 사용할 수 있습니다. 서비스 및 서비스 공급자에 대 한 자세한 내용은 참조 하십시오. 서비스. 다음 절차는 추가 기능을 작성 하 고 다음 서비스에서 추가 기능을 구하는 방법을 보여 줍니다.

추가 기능 만들기

이 섹션에는 Visual Studio Visual Studio 추가 기능 프로젝트 템플릿을 사용 하 여 애드인 만들기.

추가 기능을 만들려면

  1. Visual Studio를 엽니다. 에 파일 메뉴를 가리키고 New 하 고 다음을 클릭 새 프로젝트.

    새 프로젝트 대화 상자가 나타납니다.

  2. 왼쪽된 창에는 새 프로젝트 대화 상자에서 확장은 기타 프로젝트 형식 노드 및 다음 확장성 노드.

  3. 새로운 Visual Studio 라는 추가 기능 프로젝트 추가 기능.

    Visual Studio 추가 기능 마법사를 실행 합니다.

  4. 에 있는 프로그래밍 언어 선택 페이지에서 선택 추가 기능 만들기를 사용 하 여 C# 또는 Visual Basic 사용 하 여 추가 기능 만들기.

  5. 에 있는 응용 프로그램 호스트 선택 페이지에서 선택 Microsoft Visual Studio 2010 의 선택을 취소 하 고 Microsoft Visual Studio 2010 매크로.

  6. 이름 입력 하 고 설명 페이지에서 입력 MyAddin 에 이름 상자 및 MyAddin 연습 에 설명 상자.

  7. 추가 기능 옵션 선택 페이지를 명령을 작성 하 시겠습니까 모음 UI에?. 다른 확인란의 선택을 취소 합니다.

  8. 다른 모든 기본값을 적용 합니다.

  9. 솔루션을 빌드하고 오류 없이 컴파일되는지 확인 합니다.

추가 기능에서 서비스를 받기

다음 단계에서는 서비스에서 추가 기능을 통해 확보를 통해 안내.

서비스를 받으려면

  1. 파일 Connect.cs 또는 Connect.vb 열고 다음이 줄을 추가 using (C#) 또는 Imports (Visual Basic) 문을:

    Imports System.Runtime.InteropServices
    Imports Microsoft.VisualStudio.OLE.Interop
    Imports Microsoft.VisualStudio.Shell.Interop
    Imports IOleServiceProvider = Microsoft.VisualStudio.OLE.Interop.IServiceProvider
    
    using System.Runtime.InteropServices;
    using Microsoft.VisualStudio.OLE.Interop;
    using Microsoft.VisualStudio.Shell.Interop;
    using IOleServiceProvider = Microsoft.VisualStudio.OLE.Interop.IServiceProvider;
    
  2. 프로젝트 노드를 마우스 오른쪽 솔루션 탐색기 이 추가 됩니다.NET 참조 하십시오.

    Microsoft.VisualStudio.OLE.Interop
    Microsoft.VisualStudio.Shell.Interop
    
  3. 이 줄을 코드에 추가 if(commandName == "Addin.Connect.Addin") 또는 If commandName = "Addin.Connect.Addin" Then 절에서 Exec 메서드:

    If commandName = "Addin.Connect.Addin" Then 
        Dim sp As IOleServiceProvider = DirectCast(_applicationObject, IOleServiceProvider)
        Dim SID As Guid = GetType(SVsUIShell).GUID
        Dim IID As Guid = GetType(IVsUIShell).GUID
        Dim output As IntPtr
        sp.QueryService(SID, IID, output)
        Dim uiShell As IVsUIShell = DirectCast(Marshal.GetObjectForIUnknown(output), IVsUIShell)
    
        Dim clsid As Guid = Guid.Empty
        Dim result As Integer
        uiShell.ShowMessageBox(0, clsid, "MyAddin", String.Format(System.Globalization.CultureInfo.CurrentCulture, "Inside " & Me.ToString()), String.Empty, 0, _
        OLEMSGBUTTON.OLEMSGBUTTON_OK, OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST, OLEMSGICON.OLEMSGICON_INFO, 0, result)
    
        handled = True 
        Return 
    End If
    
    if (commandName == "Addin.Connect.Addin")
    {
        IOleServiceProvider sp = (IOleServiceProvider)
          _applicationObject;
        Guid SID = typeof(SVsUIShell).GUID;
        Guid IID = typeof(IVsUIShell).GUID;
        IntPtr output;
        sp.QueryService(ref SID, ref IID, out output);
        IVsUIShell uiShell = (IVsUIShell)Marshal.GetObjectForIUnknown(output);
    
        Guid clsid = Guid.Empty;
        int result;
        uiShell.ShowMessageBox(
           0,
           ref clsid,
           "MyAddin",
           string.Format(
              CultureInfo.CurrentCulture, "Inside " + this.ToString()),
           string.Empty,
           0,
           OLEMSGBUTTON.OLEMSGBUTTON_OK,
           OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST,
           OLEMSGICON.OLEMSGICON_INFO,
           0,
           out result);
    
        handled = true;
        return;
    }
    

    이 코드는 현재 응용 프로그램 개체를 캐스팅 (형식 DTE2)에 IOleServiceProvider, 다음 호출 QueryService 얻을 수 있는 SVsUIShell 서비스 합니다. 이 서비스는 제공 된 IVsUIShell 인터페이스입니다. ShowMessageBox 메서드 추가 기능을 실행할 때 메시지 상자를 표시 합니다.

  4. 빌드 및 F5 키를 눌러 디버그 모드에서 추가 기능 프로젝트를 시작 합니다.

    이것의 또 다른 인스턴스를 시작 Visual Studio.

  5. 새로 Visual Studio 의 인스턴스는 도구 메뉴를 클릭 추가 기능. 이 메시지 상자를 표시합니다.

    MyAddin
    Inside Addin.Connect
    

참고 항목

작업

방법: 추가 기능 비활성화 및 제거