Compartilhar via


Passo a passo: Criando um VSPackage (parte 1 de 4)

Você pode adicionar funcionalidade para Visual Studio, criando um VSPackage. Como um VSPackage é um módulo de software, ele pode ser distribuído para outras pessoas para que eles podem estender o Visual Studio em seus próprios computadores.

Usando o modelo de pacote de Visual Studio, você pode tornar um projeto que já tem os arquivos de origem e os arquivos de configuração que são necessários para criar um VSPackage. O projeto inclui um arquivo que define uma classe que você nomeia quando você cria o projeto. Essa classe, que é derivada de uma classe do Framework de pacote gerenciado (MPF) denominada Package, inclui os atributos que determinam como o VSPackage deve funcionar em Visual Studio. A classe do pacote também contém o código de inicialização e outros códigos como, por exemplo, manipuladores de comandos de menu. Essa classe é a base para o VSPackage.

Esta explicação passo a passo ensina como criar um VSPackage e personalizá-lo da seguinte maneira:

  • Crie um VSPackage usando o modelo de pacote.

  • Implemente um manipulador de comandos de menu.

  • Adicione um atalho de teclado.

  • Adicionar informações personalizadas para a tela de abertura de Visual Studio e o sobre caixa de diálogo.

Esta explicação passo a passo é parte de uma série que ensina como estender o ambiente de desenvolvimento integrado (IDE) do Visual Studio. Para obter mais informações, consulte Explicações passo a passo para personalizar Visual Studio usando VSPackages.

Pré-requisitos

Para concluir este passo a passo, você deve instalar o SDL do Visual Studio 2010.

Dica

Para obter mais informações sobre o SDK de Visual Studio, consulte Ampliando a visão geral de Visual Studio.Para descobrir como fazer o download do SDK do Visual Studio, consulte Visual Studio extensibilidade Developer Center no site do MSDN.

Locais dos modelos para o modelo de pacote de Visual Studio

O modelo de pacote de Visual Studio podem ser encontrado nos seguintes locais do Novo projeto caixa de diálogo:

  1. Em Visual Basic extensibilidade. O idioma padrão do projeto é Visual Basic.

  2. Em C# extensibilidade. O idioma padrão do projeto é C#.

  3. Em outra extensibilidade de tipos de projeto. O idioma padrão do projeto é C++.

Criando um VSPackage usando o modelo de pacote

Esta seção mostra como criar uma solução de VSPackage no Visual Studio.

Para criar uma solução básica de VSPackage

  1. Crie um VSPackage usando o modelo de projeto do pacote de Visual Studio.

  2. Na página Bem-vindo, clique em próximo.

  3. Sobre o Select a Programming Language , selecione Visual C# ou Visual Basic, selecione gerar um novo arquivo de chave para assinar o conjuntoe, em seguida, clique em próximo.

  4. Sobre o Informações básicas de VSPackage página, na caixa de nome VSPackage, digite FirstPackagee aceitar os padrões restantes. O nome da empresa e o nome do projeto serão combinadas para criar o espaço para nome para o pacote.

    Informações básicas sobre o VSPackage

    Clique em Next.

  5. Sobre o Selecionar opções de VSPackage , selecione Comando de Menue, em seguida, clique em próximo.

  6. Sobre o Opções de comando página, o nome do comando , digite Primeiro comando. (Esse texto será exibido no menu do Visual Studio). No ID do comando , digite cmdidFirstCommand. (Esse identificador será usado no código para identificar o comando.)

    Caixa de diálogo de opções de comando

    Clique em Next.

  7. Sobre o Selecionar opções de teste página, clique em Concluir.

    O modelo cria um projeto de Visual Studio que tem a funcionalidade básica. Você pode tentá-lo pressionando F5, o que cria o projeto e, em seguida, abre-o em outra instância do Visual Studio no modo de depuração (também conhecido como a compilação experimental do Visual Studio).

    Dica

    Quando você constrói o projeto pela primeira vez, Visual Studio pode parecer parar de responder e você pode receber uma mensagem que Visual Studio está ocupado.Basta ignorar a mensagem e aguarde até que Visual Studio abre e o pacote é carregado.

  8. Na compilação experimental, sobre o Ferramentas menu, um comando chamado Primeiro comando deve ser exibido. Observe que o primeiro comando é o nome que você digitou na Opções de comando página do modelo.

  9. Clique em primeiro comando. Uma mensagem semelhante ao seguinte deve aparecer.

    Caixa de mensagem do primeira comando

Examinando o manipulador de comandos de Menu

A mensagem que é exibida quando você clica Primeiro comando sobre o Ferramentas menu proveniente de código no manipulador para o comando de menu. Esse manipulador é no arquivo FirstPackage.cs ou FirstPackage.vb.

Para examinar o manipulador de item de menu

  1. Em Solution Explorer, abra FirstPackage.cs ou FirstPackage.vb.

  2. Localize a classe FirstPackage. A classe FirstPackage é definida da seguinte maneira.

    Public NotInheritable Class FirstPackage
        Inherits Package
    
    public sealed class FirstPackage : Package
    

    Observe que a classe é derivada do MPF pacote classe.

  3. Localize o código para o manipulador de menu, que é implementado pelo método MenuItemCallback. A função de manipulador do menu é um método de manipulador de eventos típico do Windows Forms.

    Private Sub MenuItemCallback(ByVal sender As Object, ByVal e As EventArgs)
            ' Show a Message Box to prove we were here
            Dim uiShell As IVsUIShell = TryCast(GetService(GetType(SVsUIShell)), IVsUIShell)
            Dim clsid As Guid = Guid.Empty
            Dim result As Integer
            Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(uiShell.ShowMessageBox(0, clsid, "FirstPackage", String.Format(CultureInfo.CurrentCulture, "Inside {0}.MenuItemCallback()", Me.GetType().Name), String.Empty, 0, OLEMSGBUTTON.OLEMSGBUTTON_OK, OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST, OLEMSGICON.OLEMSGICON_INFO, 0, result))
        End Sub
    
    private void MenuItemCallback(object sender, EventArgs e)
    {
        IVsUIShell uiShell = (IVsUIShell)GetService(typeof(SVsUIShell));
        Guid clsid = Guid.Empty;
        int result;
    
        Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(
            uiShell.ShowMessageBox(
                0, ref clsid,
                "FirstPackage",
                string.Format(CultureInfo.CurrentCulture, 
                    "Inside {0}.MenuItemCallback()", this.ToString()),
                string.Empty, 0,
                OLEMSGBUTTON.OLEMSGBUTTON_OK,
                OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST,
                OLEMSGICON.OLEMSGICON_INFO,
                0, out result));
    }
    

Adicionando um atalho de teclado

Por padrão, os comandos de menu que são criados pelo modelo de pacote não tem um atalho de teclado. Você pode adicionar um comando primeiro.

Para adicionar um atalho de teclado padrão

  1. Em Solution Explorer, abra First.vsct.

    O arquivo é aberto no editor de XML no Visual Studio.

  2. Encontrar o final do elemento comandos, que é indicado pela </Commands> marca.

  3. Adicione as seguintes linhas entre as </Commands> marca e o <Symbols> marca.

    <KeyBindings>
      <KeyBinding guid="guidFirstCmdSet" id="cmdidFirstCommand"    editor="guidVSStd97" key1="M" mod1="(control shift)"/>
    </KeyBindings>
    

    Este elemento KeyBinding tem vários atributos. O guid e id atributos determinam qual comando receberá o atalho de teclado. O guid é o GUID do VSPackage e id é o identificador de comando que você digitou quando você executou o modelo. Ambos os símbolos são definidos na seção símbolos, como segue.

    <Symbols>
      <GuidSymbol name="guidFirstCmdSet"     value="{600efde8-1f5e-4df5-bc22-06074a411975}">
        <IDSymbol name="cmdidFirstCommand" value="0x0100" />
      </GuidSymbol>
    

    O valor da editor atributo é um GUID que representa o contexto no qual o atalho de teclado estarão disponível. No Visual Studio, a vinculação de um atalho de teclado para um comando pode ser escopo Windows específico ou feita global (ou seja, disponível em todos os lugares em Visual Studio). Por exemplo, em um editor de texto, CTRL + I pode executar o comando de pesquisa Incremental, mas em Solution Explorer, CTRL + I não tem uma chave ligação; Portanto, CTRL + I só está disponível no editor de texto. Nesta explicação, o atalho de teclado foi projetado para ser global. Portanto, o valor do atributo editor é guidVSStd97, que é o valor que se torna um atalho de teclado global.

    O key1 e mod1 atributos definidos a chave e um modificador que deve ser pressionado para ativar o atalho de teclado. O valor de key1, todas as teclas no teclado estão disponíveis no formulário simbólico, por exemplo, "M" para a letra m e "VK_F5" para a função de tecla F5. O valor de mod1 pode ser "Alt", "Controle" ou "Shift", separados por espaços, em qualquer combinação.

    Esta explicação passo a passo, o valor key1 é M e o valor de mod1 é (Control Shift). Portanto, o atalho de teclado é CTRL + SHIFT + M.

  4. Sobre o Debug menu, clique em Start without debugging.

    No experimental construir de Visual Studio, diante do Ferramentas menu, CTRL + SHIFT + M deve ser exibida ao lado Primeiro comando.

    Primeiro comando com atalho

  5. Pressione CTRL + SHIFT + M. Você deve ver a mesma mensagem que aparece quando você clica em Primeiro comando sobre o Ferramentas menu.

    Para obter mais informações sobre arquivos de .vsct, consulte Referência de esquema XML VSCT.

Adicionar informações personalizadas para a caixa de diálogo sobre

Você pode incluir um ícone e informações sobre o pacote na sobre caixa de diálogo. Para fazer isso, você deve fazer as seguintes alterações a solução:

  • Modificar o InstalledProductRegistrationAttribute argumentos para a classe principal do VSPackage.

  • Implementar a IVsInstalledProduct interface para a classe principal do VSPackage.

  • Adicione um ícone para a pasta de recursos.

  • O ícone do arquivo de VSPackage.resx de referência.

A classe principal do VSPackage usa o atributo InstalledProductRegistration para especificar onde encontrar informações para o sobre caixa de diálogo. Esta explicação passo a passo, a classe principal é denominada FirstPackage e ele pode ser modificado abrindo FirstPackage.cs ou FirstPackage.vb.

O novo modelo de projeto gera o seguinte atributo InstalledProductRegistration.

<InstalledProductRegistration(    false, "#110", "#112", "1.0", IconResourceID := 400)>
[InstalledProductRegistration(    false, "#110", "#112", "1.0", IconResourceID = 400)]

As identificações de recurso "# 110" e "# 112" consultem recursos de seqüência de caracteres que são definidos no arquivo VSPackage.resx, da seguinte maneira:

  • 110 se refere a FirstPackage

  • 112 se refere às informações sobre o meu VSPackage

IconResourceID 400 refere-se ao arquivo Package.ico na pasta recursos, que é definida como a seguir no arquivo VSPackage.resx.

<data name="400" type="System.Resources.ResXFileRef,
  System.Windows.Forms">
  <value>Resources\Package.ico;System.Drawing.Icon, System.Drawing,
    Version=2.0.0.0, Culture=neutral,
    PublicKeyToken=b03f5f7f11d50a3a
  </value>
</data>

Para personalizar o sobre caixa de diálogo, a alteração de atributo para o primeiro argumento da InstalledProductRegistration true, de modo que seu VSPackage pode fornecer as informações apropriadas por meio da interface IVsInstalledProduct.

Para adicionar informações personalizadas para a tela de abertura e a caixa de diálogo sobre

  1. Abrir FirstPackage.cs ou FirstPackage.vb, localizar o atributo InstalledProductRegistration e altere seus argumentos como a seguir.

    InstalledProductRegistration(True, Nothing, Nothing, Nothing)
    
    [InstalledProductRegistration(true, null, null, null)]
    
  2. Derive a classe FirstPackage de pacote e o IVsInstalledProduct.

    Public NotInheritable Class FirstPackage
        Inherits Package
        Implements IVsInstalledProduct
    
    public sealed class FirstPackage : Package, IVsInstalledProduct
    
  3. Implicitamente, implemente a interface IVsInstalledProduct. Esta etapa é diferente para C# e Visual Basic.

    1. Em C#, implicitamente implementar a interface IVsInstalledProduct passando o mouse sobre IVsInstalledProduct. Quando o menu IntelliSense for exibida, clique no primeiro item.

      Implementar interface

      Isso adiciona os seguintes métodos de stub para a classe FirstPackage. Em uma etapa posterior, você irá preencher os métodos.

      public int IdBmpSplash(out uint pIdBmp)
      {
          throw new NotImplementedException();
      }
      public int IdIcoLogoForAboutbox(out uint pIdIco)
      {
          throw new NotImplementedException();
      }
      public int OfficialName(out string pbstrName)
      {
          throw new NotImplementedException();
      }
      public int ProductDetails(out string pbstrProductDetails)
      {
          throw new NotImplementedException();
      }
      public int ProductID(out string pbstrPID)
      {
          throw new NotImplementedException();
      }
      
    2. No Visual Basic, adicione o código a seguir para a parte inferior da classe FirstPackage. Em uma etapa posterior, você irá preencher os métodos.

      Function ProductDetails( _
          <OutAttribute()> ByRef pbstrProductDetails As String) _
      As Integer
      
      End Function
      
      Public Function IdBmpSplash(ByRef pIdBmp As UInteger) As Integer Implements Microsoft.VisualStudio.Shell.Interop.IVsInstalledProduct.IdBmpSplash
      
      End Function
      
      Public Function IdIcoLogoForAboutbox(ByRef pIdIco As UInteger) As Integer Implements Microsoft.VisualStudio.Shell.Interop.IVsInstalledProduct.IdIcoLogoForAboutbox
      
      End Function
      
      Public Function OfficialName(ByRef pbstrName As String) As Integer Implements Microsoft.VisualStudio.Shell.Interop.IVsInstalledProduct.OfficialName
      
      End Function
      
      Public Function ProductID(ByRef pbstrPID As String) As Integer Implements Microsoft.VisualStudio.Shell.Interop.IVsInstalledProduct.ProductID
      
      End Function
      
  4. Copie o Icon.ico de < caminho de instalação do SDK do Visual Studio > \Common7\IDE\NewFileItems e cole-o na pasta recursos na solução de pacote.

  5. Em Solution Explorer, o botão direito do mouse na pasta recursos, aponte para Adde, em seguida, clique em Item existente. Definir o filtro de tipo de arquivo todos os arquivos (*. *) e, em seguida, adicione Icon.ico.

  6. Em Solution Explorer, VSPackage.resx com o botão direito e, em seguida, clique em Abrir com. Selecione Editor XML e clique em OK para abrir o arquivo no editor XML.

  7. Adicione as seguintes linhas antes do final </root> marca.

    <data name="500" type="System.Resources.ResXFileRef,   System.Windows.Forms">
      <value>Resources\GenericPackage.ico;    System.Drawing.Icon, System.Drawing, Version=2.0.0.0,    Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
      </value>
    </data>
    

    Essa marcação declara Icon.ico como recurso de ID 500.

  8. Em FirstPackage.cs ou FirstPackage.vb, substitua a implementação da interface IVsInstalledProduct, usando o código a seguir.

    Public Function ProductDetails(ByRef pbstrProductDetails As String) As Integer Implements IVsInstalledProduct.ProductDetails
        pbstrProductDetails = "This is my package"
        Return Microsoft.VisualStudio.VSConstants.S_OK
    End Function
    
    Public Function IdBmpSplash(ByRef pIdBmp As UInteger) _
    As Integer Implements IVsInstalledProduct.IdBmpSplash
        Return Microsoft.VisualStudio.VSConstants.S_OK
    End Function
    
    Public Function IdIcoLogoForAboutbox(ByRef pIdIco As UInteger) _
    As Integer Implements IVsInstalledProduct.IdIcoLogoForAboutbox
        pIdIco = 600
        Return Microsoft.VisualStudio.VSConstants.S_OK
    End Function
    
    Public Function OfficialName(ByRef pbstrName As String) _
    As Integer Implements IVsInstalledProduct.OfficialName
        pbstrName = "My Package"
        Return Microsoft.VisualStudio.VSConstants.S_OK
    End Function
    
    Public Function ProductID(ByRef pbstrPID As String) _
    As Integer Implements IVsInstalledProduct.ProductID
        pbstrPID = "My Package ID"
        Return Microsoft.VisualStudio.VSConstants.S_OK
    End Function
    
    public int IdBmpSplash(out uint pIdBmp) 
    { 
        return Microsoft.VisualStudio.VSConstants.S_OK; 
    } 
    public int IdIcoLogoForAboutbox(out uint pIdIco) 
    { 
        pIdIco = 500; 
        return Microsoft.VisualStudio.VSConstants.S_OK; 
    } 
    public int OfficialName(out string pbstrName) 
    { 
        pbstrName = "My Package"; 
        return Microsoft.VisualStudio.VSConstants.S_OK; 
    } 
    public int ProductDetails(out string pbstrProductDetails) 
    { 
        pbstrProductDetails = "This is my package"; 
        return Microsoft.VisualStudio.VSConstants.S_OK; 
    } 
    public int ProductID(out string pbstrPID) 
    { 
        pbstrPID = "My Package ID"; 
        return Microsoft.VisualStudio.VSConstants.S_OK; 
    } 
    

    O segundo método retorna a ID de recurso para o ícone. As três funções restantes retornam o nome, detalhes do produto e identificação do produto, para que eles serão exibidos os sobre caixa de diálogo.

Você pode testar as alterações ao concluir o procedimento a seguir.

Para testar a tela de abertura e a personalização de caixa de diálogo sobre

  1. Em Solution Explorer, clique com o botão direito no primeiro nó do projeto e, em seguida, clique em Propriedades. O projetista do aplicativo é exibida.

  2. Clique em Debug. O painel de opções de depuração aparece.

  3. No argumentos de linha de comando caixa, adicionar o /splash alternar.

    Opção da tela inicial de linha de comando

  4. Pressione F5 para abrir o Visual Studio na compilação experimental.

  5. Sobre o Ajuda menu, clique em Sobre o Microsoft Visual Studio.

    O sobre caixa de diálogo aparece e exibe o ícone e o texto do seu VSPackage.

    Caixa de diálogo sobre da Ajuda

O Que Mais Há

Solution Explorer e o Lista de tarefas são exemplos de janelas de ferramentas. Na Passo a passo: Criando uma janela de ferramenta (parte 2 de 4), você pode criar uma janela de ferramenta que encaixa em Visual Studio e permite reproduzir arquivos de música.

Consulte também

Conceitos

Exemplos de extensibilidade de Visual Studio

Outros recursos

VSPackages

Identificação de marca VSPackage

VSPackage Load Keys

Amostra de Reference.Package

Amostra de Reference.Package