Compartilhar via


Criar uma extensão com um VSPackage

Este passo a passo mostra como criar um projeto VSIX e adicionar um item de projeto VSPackage. Usaremos o VSPackage para obter o serviço UI Shell para mostrar uma caixa de mensagem.

Criar um VSPackage

  1. Crie um projeto VSIX chamado FirstPackage. Você pode encontrar o modelo de projeto VSIX na caixa de diálogo Novo projeto pesquisando por "vsix".

  2. Quando o projeto é aberto, adicione um modelo de item de pacote do Visual Studio chamado FirstPackage. No Gerenciador de Soluções, clique com o botão direito do mouse no nó do projeto e selecione Adicionar>Novo Item. Na caixa de diálogo Adicionar Novo Item, vá para Visual C#>Extensibility e selecione Pacote do Visual Studio. No campo Nome na parte inferior da janela, altere o nome do arquivo de comando para FirstPackage.cs.

  3. Compile o projeto e comece a depuração.

    A instância experimental do Visual Studio aparece. Para obter mais informações sobre a instância experimental, consulte A instância experimental.

  4. Na instância experimental, abra a janela Extensões e atualizações de ferramentas>. Você deve ver a extensão FirstPackage aqui. (Se você abrir Extensões e atualizações em sua instância de trabalho do Visual Studio, você não verá FirstPackage).

Carregar o VSPackage

Neste ponto, a extensão não carrega porque não há nada que faça com que ela carregue. Você geralmente pode carregar uma extensão quando interage com sua interface do usuário (clicando em um comando de menu, abrindo uma janela de ferramenta) ou especificando que o VSPackage deve ser carregado em um contexto de interface do usuário específico. Para obter mais informações sobre como carregar VSPackages e contextos de interface do usuário, consulte Carregando VSPackages. Para este procedimento, mostraremos como carregar um VSPackage quando uma solução estiver aberta.

  1. Abra o arquivo FirstPackage.cs Procure a declaração da FirstPackage turma. Substitua os atributos existentes pelos seguintes atributos:

    [PackageRegistration(UseManagedResourcesOnly = true)]
    [InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)] // Info on this package for Help/About
    [ProvideAutoLoad(UIContextGuids80.SolutionExists)]
    [Guid(FirstPackage.PackageGuidString)]
    public sealed class FirstPackage : Package
    
  2. Vamos adicionar uma mensagem que nos informa que o VSPackage foi carregado. Usamos o método do Initialize() VSPackage para fazer isso, porque você pode obter serviços do Visual Studio somente depois que o VSPackage tiver sido localizado. (Para obter mais informações sobre como obter serviços, consulte Como: Obter um serviço.) Substitua o método de FirstPackage por código que obtém o Initialize()SVsUIShell serviço, obtém a IVsUIShell interface e chama seu ShowMessageBox método.

    protected override void Initialize()
    {
        base.Initialize();
    
        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}.Initialize()", this.GetType().FullName),
            string.Empty,
            0,
            OLEMSGBUTTON.OLEMSGBUTTON_OK,
            OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST,
            OLEMSGICON.OLEMSGICON_INFO,
            0,
            out result));
    }
    
  3. Compile o projeto e comece a depuração. A instância experimental é exibida.

  4. Abra uma solução na instância experimental. Você verá uma caixa de mensagem que diz First Package Inside Initialize().