Início > Visual Studio > Criando um VSPackage no Visual Studio – Parte 01

Criando um VSPackage no Visual Studio – Parte 01

24 de outubro de 2009 Deixe um comentário Go to comments

Olá, final de semana já chegou (24/10) e hoje faz sol em são Paulo, por isso acho que é um ótimo dia para falar sobre a possibilidade de estender as features do visual Studio.

Anteriormente falamos em um artigo sobre a possibilidade de criar templates de projetos e distribuir para os desenvolvedores, evitando repetição de tarefas, também falamos em outro momento sobre o Power Command, uma extensão do visual Studio que adiciona várias funções novas para a IDE. No caso da extensão do Power Command que nada mais é que pacotes de extensibilidade do visual Studio.

Bom hoje iremos aprender a adicionar um menu no visual Studio que chama um formulário qualquer, com este exemplo será possível ver como é fácil estender funcionalidades do visual Studio e ainda integrar sua aplicação na IDE de desenvolvimento.

Para trabalhar com os tipos de projetos de extensibilidade do visual Studio é necessário baixar o SDK, no nosso caso como iremos trabalhar com a versão 2008 iremos baixar o SDK 2008, para baixar acesse: http://www.microsoft.com/downloads/details.aspx?FamilyID=30402623-93ca-479a-867c-04dc45164f5b&displaylang=en

– Após instalar o SDK no Visual Studio vá em New Project/Other Project Types/Extensibility e repare que novos tipos de projetos foram adicionados na sua IDE.

Escolha o tipo de projeto Visual Studio integration Package, e posteriormente, deixe o nome do projeto como MeuPrimeiroPacoteVS, na tela que irá aparecer (Wizard VS Integration Package) clique em Next.

Selecione a linguagem Visual C# e marque a opção Generate a new key file to sign the assembly e clique em Next.

Preencha as informações do pacote (caso queira você pode colocar um ícone personalisado), é importante notar a versão do pacote e o edição mínima do visual Studio (para deploy do Pacote) no nosso caso estamos trabalhando com a versão mínimo Standard ou estamos dizendo que nosso pacote irá funcionar em edições standard para cima do visual studio.

Escolha o Menu Command, neste estamos dizendo que a funcionalidade será inserida dentro do contexto do menu do VS.

Vamos inserir na tela de Command Options o nome que irá aparecer no menu (Command name) e o Id do comando na tela.

Por fim, clique em Next desmarque as opções de teste (não iremos utilizar testes unitários neste exemplo), e clique em Finish.

Pronto nosso pacote, esta pronto, para testarmos de um F5 (Start Debugging), e veja que uma versão diferente da IDE (Experimental Hive) que você esta utilizando será chamada para você, vá em Tools e procure o comando que acabou de criar.

            Após clicar no menu Chamar tela repare que um messageBox será chamado:

NOTA: O Experimental Hive permite que você debug os seus pacotes sem registrar nada na IDE de desenvolvimento, pois cada VSPackage contém um registro no Register da máquina. Falaremos mais sobre isso no segundo post onde iremos fazer o deploy deste VSPackage.

 

Feche o Visual Studio Experimenta Hive, e vá no Solution Explorer do seu projeto e Add/New Item do tipo Windows Form, coloque o nome de formVsPackage.

Altere as seguintes propriedades do seu formulário.

Propriedade

Valor

Text

“Customizando Visual Studio.”

StarPosition

“CenterScreen”

 

Repare que agora você pode criar um projeto como quiser, ou seja, pode fazer um acesso a banco, pode chamar aplicações e etc.

Para finalizar nosso projeto vamos alterar a classe MeuPrimeiroPacoteVSPackage.cs e altere o evento MenuItemCallback para :

  /// <summary>

/// This function is the callback used to execute a command when the a menu item is clicked.

/// See the Initialize method to see how the menu item is associated to this function using

/// the OleMenuCommandService service and the MenuCommand class.

/// </summary>

private void MenuItemCallback(object sender, EventArgs e)

{

    new formVsPackage().ShowDialog();

}

 

Conforme o comentário do evento esta função é chamada quando o item do meu é clicado, aperte F5 e veja o resultado.

Repare que agora quando você clica na opção de Chamar Tela, o formulário que acabamos de criar é chamado.

Bom, vamos sofisticar um pouco este código. Imagine que você precise garantir que esta função apenas será utilizada quando uma solução estiver aberta no contexto do Visual Studio, como fazer ?

Para isso iremos utilizar o namespace EnvDTE, vá em Add Reference/ .NET e adicione EnvDTE ao seu projeto.

Adicione a referencia na classe:

using EnvDTE;

 

Agora iremos crie um método chamado ProjetoAberto que retorne um tipo boleano.

Ex:

private bool ProjetoAberto()

{

            //Interface para trabalhar com as opções do visual studio

            DTE dte;

 

            //Pegando o tipo através do VS Container.

            dte = (DTE)GetService(typeof(DTE));

 

            //Verificando se a solução esta aberta.

            if (dte != null)

                return dte.Solution.IsOpen;

            else

                return false;

}

 

Repare que neste método estamos utilizando a interface DTE do namespace EnvDTE, ela possibilita acessar as funções internas do visual Studio, em nosso exemplo estamos verificando e retornando o valor da propriedade IsOpen de Solution (representa a solução).

Agora vamos alterar o evento MenuItemCallback para verificar se ProjetoAberto retorna true antes de chamar o formulário, senão apresente um messageBox informando o usuário que ele precisa estar com uma solução aberta para utilizar a função chamar tela.

Veja como deve ficar:

private void MenuItemCallback(object sender, EventArgs e)

        {

            if (ProjetoAberto())

                new formVsPackage().ShowDialog();

            else

                MessageBox.Show("É necessário estar com uma solução aberta para utilizar esta função.");

        }

 

Agora rode o VsPackage novamente e tente acessar o menu sem criar uma solução no visual Studio, e repare que o messageBox irá aparecer, em seguida crie um projeto qualquer e tente rodar a aplicação novamente, e veja que agora o formulário que criamos será chamado.

 

Bom espero que esta dica seja útil, e em breve iremos irei escreve como criar um setup (deploy) dos seus pacotes e distribuir ele para os demais desenvolvedores/usuários.

 

Para saber mais acesse:

http://blogs.msdn.com/vsxue/archive/2007/11/15/tutorial-2-creating-your-first-vspackage.aspx

http://msdn.microsoft.com/en-us/vsx/default.aspx

 

Um grande abraço, e até mais.

 

Categorias:Visual Studio
  1. Nenhum comentário ainda.
  1. No trackbacks yet.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: