Partilhar via


Passo a passo: Chamando o Visual Studio SDK usando automação

Esta explicação passo a passo ilustra como criar um suplemento de Visual Studio que consome um serviço de Visual Studio. O add-in que você cria obtém um provedor de serviços e o usa para obter um serviço. Você pode usar essa mesma técnica para obter qualquer serviço de Visual Studio proffered. Para obter mais informações sobre os serviços e provedores de serviços, consulte Serviços. Os procedimentos a seguir demonstram como criar um add-in e, em seguida, obter um serviço do suplemento.

Criando um suplemento

Nesta seção, você cria um suplemento Visual Studio usando o modelo de projeto Add-In Visual Studio.

Para criar um suplemento

  1. Abra Visual Studio. Sobre o arquivo , aponte para New e, em seguida, clique em Novo projeto.

    A caixa de diálogo New Project será exibida.

  2. No painel esquerdo da Novo projeto caixa de diálogo caixa, expanda o Other Project Types nó e em seguida, clique o extensibilidade nó.

  3. Criar uma nova Visual Studio projeto de suplemento denominado Addin.

    O Visual Studio assistente Add-In é executado.

  4. No Select a Programming Language , selecione criar um Add-In usando Visual C# ou criar um Add-In usando o Visual Basic.

  5. Sobre o Selecione um aplicativo Host , selecione Microsoft Visual Studio 2010 e desmarque Macros do Microsoft Visual Studio 2010.

  6. No Insira um nome e descrição de página, digite MyAddin no nome caixa e MyAddin explicação passo a passo no Descrição caixa.

  7. Sobre o Escolher opções de suplemento página, selecione você gostaria de criar comando UI da barra para seu suplemento?. Desmarque as outras caixas de seleção.

  8. Aceite todos os outros padrões.

  9. Compilar a solução e verifique se ele foi compilado sem erros.

Obtendo um serviço de um suplemento

As etapas a seguir orientam a aquisição de um serviço de seu suplemento.

Para obter um serviço.

  1. Abra o arquivo Connect. cs ou Connect. vb e adicionar essas linhas para o using (C#) ou Imports (Visual Basic) instruções:

    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. Clique com o botão direito no nó do projeto em Solution Explorer e adicioná-los.NET referências:

    Microsoft.VisualStudio.OLE.Interop
    Microsoft.VisualStudio.Shell.Interop
    
  3. Adicionar essas linhas de código para o if(commandName == "Addin.Connect.Addin") ou If commandName = "Addin.Connect.Addin" Then cláusula da Exec método:

    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;
    }
    

    Esse código converte o objeto atual do aplicativo (tipo DTE2) em um IOleServiceProvider, em seguida, chama QueryService para obter o SVsUIShell service. Este serviço oferece uma IVsUIShell interface. O ShowMessageBox método exibe uma caixa de mensagem quando o add-in é executado.

  4. Criar e iniciar o projeto de suplemento no modo de depuração pressionando F5.

    Isso iniciará outra instância do Visual Studio.

  5. Nos novos Visual Studio da instância, diante do Ferramentas menu, clique em Addin. A caixa de mensagem exibirá o seguinte:

    MyAddin
    Inside Addin.Connect
    

Consulte também

Tarefas

Como desativar e remover um suplemento