Artigo .net Magazine 42 - Criando Templates e StarterKit de projetos

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (2)  (0)

capaNET42.JPG

Clique aqui para ler todos os artigos desta edição

Visual Studio

Criando Templates e StarterKit de projetos

 

Este artigo discute

Este artigo usa as seguintes tecnologias

·       Criando uma solution;

·       Criando um template;

·       Criando um StarterKit para instalação.

 

Visual Studio 2005.

 

Os desenvolvedores de software deparam-se frequentemente com o termo “produtividade”. A maioria das empresas, objetivando satisfazer bem seus clientes, busca agilizar o desenvolvimento reduzindo sempre que possível o tempo de produção, sem perder é claro a qualidade.

Diante desse cenário, venho demonstrar como podemos criar nossos próprios templates e StarterKits de projetos, usando o Visual Studio 2005, favorecendo a rapidez, no que tange o desenvolvimento de novas soluções. Antes de começar nosso exemplo, vou descrever os conceitos sobre os objetos de trabalho que aprenderemos neste artigo.

O que são Templates e Starterkits?

Bom, quando selecionamos um novo projeto no Visual Studio, seja ele Windows ou Web, estamos na verdade escolhendo um template de projeto. Ele contém informações básicas de um projeto em seu estado inicial. Por exemplo, um novo projeto Web contém por padrão um diretório chamado App_Data e também uma página chamada Default.aspx. Esses dois objetos estão definidos em um template que representa um projeto Web.

Agora, os StarterKits são instaladores de projetos que permitem distribuir para outras pessoas, uma implementação ou uma tecnologia específica desenvolvida. Por exemplo, podemos ter um template que contém vários projetos pré-definidos e a partir daí, criar então um instalador para ele, facilitando sua distribuição ao time de desenvolvimento.

Com essas definições, podemos dar início ao nosso exemplo que será divido em duas etapas, sendo a primeira, voltada para a criação de um template contendo três projetos, e a segunda, voltada para a criação de um StarterKit para a instalação desse projeto.

Criando uma Solution

Vamos criar um projeto Web Site, portanto abra o Visual Studio 2005 e acesse o menu File>New>Web Site. Dê nome ao projeto de “ProjetoStarterKit” e salve-o num diretório chamado “MultiplosProjetosTemp” (Figura 1). A Figura 2 representa a estrutura básica que usaremos como template para a criação do Starterkit.

Figura 1. Criando um projeto Web Site

 

Figura 2. Estrutura da solução para criação do template

Adicione nessa solução dois projetos do tipo ClassLibrary. Clique com o botão direito na Solution, depois selecione Add>New Project>Class Library e salve-os no diretório criado anteriormente, chamando-os de ClassLibrary1 e ClassLibrary2 (Figura 3).

 

Figura 3. Criando o projeto ClassLibrary

Deixe no projeto ClassLibrary1 uma única definição de classe chamada Class1 e exclua a classe existente no projeto ClassLibrary2. Com o objetivo de demonstrar que qualquer recurso existente na plataforma .NET pode ser adicionado a um template, vamos a partir de agora inserir um Web User Control.

Clique com o botão direito no projeto Web, selecione Add New Item e escolha o item Web User Control. Mantenha o mesmo nome (Figura 4) e clique em OK para adicioná-lo.

 

Figura 4. Adicionando um Web User Control ao projeto Web

Logo depois, adicione um arquivo de configuração (web.config). Clique com o botão direito no projeto Web, selecione Add New Item e escolha o item Web Configuration File (Figura 5).

 

Figura 5. Adicionando um arquivo web.config ao projeto Web

Em um projeto de template, todas as referências/dependências dos projetos ClassLibrary definidas no projeto Web serão criadas automaticamente assim que criarmos uma nova solução a partir desse template.

Portanto, vamos definir as referências do projeto Web. Clique com o botão direito no projeto Web, selecione Property Pages. Selecione a opção References e clique em Add Reference. Na nova janela que se abre, clique na guia Projects e selecione os dois projetos ClassLibrary. Finalize esse processo clicando nos botões OK das respectivas telas (Figura 6).

 

Figura 6. Adicionando referências

Finalizamos então a criação de uma solução contendo três projetos, que serão a base do nosso template de projeto. Vamos comprovar se a solução está 100% correta, executando um Build Solution. Após a compilação, veremos que um novo diretório chamado Bin foi criado, contendo as DLLs dos projetos ClassLibrary que acabamos de referenciar (veja Figura 2).

Criando um template de projeto

A partir de agora, entraremos no processo de criação do template. O primeiro passo é exportar cada projeto existente em nossa solução para um template específico de cada projeto. Comecemos pelo projeto Web e logo depois, façamos os mesmos passos para os demais projetos. Para exportar o projeto Web para template, acesse o menu File>Export Template (Figura 7).

 

 

Figura 7. Exportando um template no Visual Studio

Uma nova janela será aberta. Ela possui duas opções, sendo uma para exportação de apenas um Item (Item Template) e outra para exportação de um projeto por completo (Project Template). Selecionaremos a opção Project Template (Figura 8).

 

Figura 8. Configurando as opções de exportação

Na mesma janela, escolhemos que projeto será exportado e também a categoria de linguagem que o projeto terá quando um novo for criado baseado nesse template. O projeto Web se chama ProjetoStarterKit e a categoria de linguagem é Visual C#. Após configuradas essas opções, prossiga a exportação clicando em Next.

Na janela seguinte, podemos definir um ícone, um nome e também uma breve descrição para o template exportado. Vamos dar nome ao template de “ProjetoWebTemplate” e como descrição, digite: “Exemplo de Projeto de Template”. O ícone será o default do Visual Studio (Figura 9).

 

Figura 9. Definindo ícone, nome e descrição do template

As duas opções Automatically import the template into Visual Studio e Display an explorer window on the output files folder, correspondem respectivamente, à importação automática do template exportado para dentro do Visual Studio e a exibição do arquivo exportado em uma janela do Windows Explorer.

Como o template que estamos gerando será composto por três projetos, vamos deixar a primeira opção desmarcada. Por fim, clique em Finish para finalizar a exportação do projeto Web para template.

Veremos na janela do Windows Explorer que se abre, o arquivo que acabamos de exportar. Repita os mesmos passos de exportação para os demais projetos, tendo como resultado final, três arquivos de template (com extensão ZIP), gerados dentro do diretório padrão do Visual Studio 2005.

Os nomes dos templates serão: ClassLibrary1Template e ClassLibrary2Template. Já a descrição, será a mesma do primeiro projeto exportado (Figura 10).

 

Figura 10. Arquivos de templates exportados

Após exportados os templates, crie um diretório temporário, por exemplo (C:\Temp). Nesse diretório, descompactaremos todos os arquivos de template que acabamos de exportar, sendo que cada arquivo descompactado deverá ser armazenado dentro de seu diretório específico.

Portanto, remova os três arquivos de template zipados para dentro do diretório C:\Temp. Descompacte-os em seus diretórios específicos e logo em seguida, exclua os três arquivos zipados, pois não vamos mais precisar deles. Portanto, o diretório C:\Temp deverá conter apenas os três diretórios (Figura 11).

 

Figura 11. Arquivos de templates descompactados em seus respectivos diretórios

Estrutura do template

O passo seguinte é criar um arquivo de configuração do template que estamos criando, que possui extensão vstemplate. Esse arquivo, que tem o formato em XML, é dividido em duas seções. A primeira, chamada , contém propriedades que permitem definir o nome, descrição, tipo do projeto, ícone, entre outras.

Na segunda, chamada , devemos definir links no arquivo de template que referenciarão os projetos que serão criados automaticamente, quando uma nova solução for criada a partir desse template.

Veja na Tabela 1 a descrição das propriedades desse arquivo de configuração.

 

Propriedade

Descrição

Name

Nome de apresentação do template no box New Project do Visual Studio.

DefaultName

Nome default para um novo projeto criado a partir de um template (pode ser alterado pelo usuário antes da criação).

Description

Uma pequena descrição.

ProjectType

Tipo de projeto.

SortOrder

Ordem de apresentação do template no box New Project do Visual Studio.

CreateNewFolder

Define se será criada uma nova pasta para o projeto quando o mesmo for criado.

LocationField

Habilita/desabilita campo de localização na janela New Project do Visual Studio.

EnableLocationBrowseButton

Habilita/desabilita botão Browse na janela New Project do Visual Studio.

Icon

Especifica um ícone personalizado.

ProjectTemplateLink

Especifica o arquivo de configuração (vstemplate) dos projetos que farão parte do template.

Tabela 1. Propriedades do arquivo vstemplate

Crie um arquivo de texto comum com o Notepad e altere sua extensão para vstemplate. Dê o nome de “MultipleProjectTemplate.vstemplate”. O conteúdo final desse arquivo deverá ficar conforme a Listagem 1.

 

Listagem 1. Criando o arquivo vstemplate

<VSTemplate Version="2.0.0"

  xmlns="http://schemas.microsoft.com/developer/vstemplate/2005"

  Type="ProjectGroup">

  <TemplateData>

    <Name>MultipleProjectTemplateName>

    <DefaultName>MultipleProjectDefaultName>

    <Description>Exemplo de Projeto de Template

    Description>

    <ProjectType>CSharpProjectType>

   

    <SortOrder>1SortOrder>

    <CreateNewFolder>trueCreateNewFolder>

    <LocationField>EnabledLocationField>

    <EnableLocationBrowseButton>true

    EnableLocationBrowseButton>

    <Icon>__TemplateIcon.icoIcon>

  TemplateData>

 

  <TemplateContent>

    <ProjectCollection>     

      <ProjectTemplateLink

        ProjectName="ProjetoWebTemplate">

        ProjetoWebTemplate\MyTemplate.vstemplate

      ProjectTemplateLink>     

      <ProjectTemplateLink

        ProjectName="ClassLibrary1Template">

        ClassLibrary1Template\MyTemplate.vstemplate

      ProjectTemplateLink>     

      <ProjectTemplateLink

        ProjectName="ClassLibrary2Template">

        ClassLibrary1Template\MyTemplate.vstemplate     

      ProjectTemplateLink>     

    ProjectCollection>

  TemplateContent>

VSTemplate>

 

Como podemos ver, a tag contém o nome do projeto e faz referência também a um arquivo de configuração desse projeto, onde contém informações relativas a todos os objetos e componentes existentes nele.

Por exemplo, o arquivo vstemplate específico do projeto Web contém informações que indicam que ele possui um web.config, um WebUserControl, uma página Default.aspx etc., assim como, o arquivo vstemplate do projeto ClassLibrary1, contém informações sobre as classes que ele contém, bem como suas referências.

Com isso, podemos concluir que esse arquivo é o que especifica todo o conteúdo de seu respectivo projeto. Para ajudá-lo a compreender melhor o conteúdo desse arquivo, basta abrí-lo no Visual Studio e posicionar o mouse sobre as tags, pois assim um hint será exibido com uma descrição sobre a funcionalidade específica de cada uma.

Vamos entrar agora na etapa final de criação do template. É muito simples, basta compactar dentro de um mesmo arquivo em formato ZIP, todos os três diretórios descompactados anteriormente mais o arquivo vstemplate que acabamos de criar. Dê a esse arquivo o nome de “MultipleProjectTemplate.zip” (Figura 12).

 

 

Figura 12. Arquivo de template final compactado

Pronto, está criado nosso template, contendo múltiplos projetos dentro. Vamos testá-lo, pois esse arquivo será usado posteriormente na criação do StarterKit. Copie o arquivo (MultipleProjectTemplate.zip) e cole-o no diretório padrão do Visual Studio 2005 (C:\Documents and Settings\\My Documents\Visual Studio 2005\Templates\ProjectTemplates\Visual C#).

Abra seu Visual Studio 2005 e acesse o menu File>New>Project. Na janela que se abre, selecione a opção Visual C# no Project types, selecione o template que acabamos de criar, que está localizado na seção My Templates (Figura 13).

 

Figura 13. Criando um novo projeto a partir do template

Escolha um nome e um diretório que quiser e pressione OK pra criar uma nova solução. Veremos então que a solução será criada contendo três projetos, sendo eles Web, ClassLibrary1 e ClassLibrary2, conforme havíamos definido no início deste artigo.

Criando o StarterKit

Acesse o diretório padrão do Visual Studio (C:\Documents and Settings\\My Documents\Visual Studio 2005\Templates\ProjectTemplates\Visual C#) e exclua o arquivo de template que havíamos adicionado manualmente (Figura 14).

 

Figura 14. Exclusão do arquivo de template

Mas você pode estar se perguntando, por que excluí-lo? Porque criaremos um StarterKit que fará a instalação automática desse template no diretório. Vamos agora acessar o diretório temporário (C:\Temp) e criar mais um arquivo de configuração, também em formato XML.

Basta criar um arquivo texto comum com o Bloco de Notas e depois alterar sua extensão (TXT) para “vscontent”. Nesse arquivo, como podemos ver na Listagem 2, é definido o nome do arquivo de template (MultipleProjectTemplate.zip) na tag , que será executado pela instalação.

 

Listagem 2. Estrutura do arquivo (vscontent)

xml version="1.0" encoding="utf-8"?>

<VSContent xmlns="http://schemas.microsoft.com/developer/vscontent/2005">

  <Content>

    <FileName>MultipleProjectTemplate.zipFileName>

    <DisplayName>MultipleProjectDisplayName>

    <Description>Instalador de MultipleProjectDescription>

    <FileContentType>VSTemplateFileContentType>

    <ContentVersion>1.0ContentVersion>

    <Attributes>

      <Attribute name="TemplateType" value="Project"/>

      <Attribute name="Project Type" value="Visual C#"/> 

    Attributes>

  Content>

VSContent>

 

Podemos conhecer as outras propriedades, observando a Tabela 2. Especifique as propriedades do arquivo vscontent conforme a Listagem 2 e salve-o com o nome de “MultipleProjectTemplate.vscontent”.

 

Propriedade

Descrição

FileName

Nome do arquivo de template (ZIP) que contém os diretórios dos projetos mais o arquivo (vstemplate).

DisplayName

Nome do projeto de template que será apresentado na tela de instalação.

Description

Uma pequena descrição sobre o starterkit.

FileContentType

Tipo de projeto starterkit.

ContentVersion

Versão do starterkit.

Attributes

Especifica o tipo de template e também o tipo do projeto starterkit.

Tabela 2. Propriedades do arquivo (vscontent)

Venho chamar a atenção para a tag , nela é definido o tipo do projeto de template e também o tipo do projeto como um todo, que estamos desenvolvendo. Assim que finalizarmos a instalação do StarterKit, veremos que ele será instalado no diretório específico de templates do Visual Studio.

O que define essa característica de instalação é justamente a segunda tag Attribute. Se desejar testar outros tipos de projetos, basta abri-lo no Visual Studio e utilizar o Intellisense como helper.

Depois de configurado o arquivo, vamos compactá-lo junto com o arquivo de template chamado MultipleProjectTemplate.zip, que criamos na primeira parte deste artigo. Dê nome de “StarterkitMultipleProject.zip” (Figura 15).

 

Figura 15. Arquivo StarterKit criado

O último passo para a criação do StarterKit é muito simples. Para que tenhamos um arquivo que seja “executável”, basta apenas alterar a extensão do StarterkitMultipleProject.zip para VSI, ficando, portanto assim, StarterkitMultipleProject.vsi (Figura 16).

 

Figura 16. Alteração de extensão do arquivo StarterKit de ZIP para VSI

Testando a instalação do StarterKit

Pronto, está criado nosso StarterKit. Podemos agora então executá-lo e testá-lo. A Figura 17 ilustra a primeira tela do assistente de instalação.

 

Figura 17. Interface do assistente de instalação

O nome MultipleProject exibido nessa tela foi definido na tag do MultipleProjectTemplate.vscontent. Deixe selecionada essa opção e clique em Next para continuar. Uma mensagem de erro é exibida conforme a Figura 18.

 

Figura 18. Mensagem de erro referente à ausência de assinatura digital

Porém, podemos ignorá-la clicando em Yes, pois ela é exibida devido ao instalador não possuir uma assinatura digital. Geralmente, StarterKits desenvolvidos pela Microsoft possuem assinatura digital incluída.

A Figura 19 representa o último passo de instalação. Portanto, clique em Finish para terminar.

 

Figura 19. Interface final do assistente

Veremos uma mensagem exibida na própria tela confirmando o sucesso da instalação. Agora, podemos observar no diretório padrão do Visual Studio (C:\Documents and Settings\\My Documents\Visual Studio 2005\Templates\ProjectTemplates) que o template foi criado com sucesso. Clique em Close para fechar o assistente.

Terminada a instalação, vamos testar o template criando uma nova solução. No Visual Studio, acesse o menu File>New>Project e veja que o template é exibido na seção My Templates. Selecione-o, defina um nome e também um diretório para salvá-lo.

As Figuras 20 e 21 ilustram os processos de criação e compilação realizados com sucesso, referentes à nova solução.

 

Figura 20. Template adicionado ao Visual Studio

 

Figura 21. Nova solução criada a partir do template e compilada com sucesso

Conclusão

Podemos concluir que a criação de um StarterKit automatiza consideravelmente o desenvolvimento de novas soluções que possuam características básicas e comuns entre elas. Uma vez criado o StarterKit, o mesmo poderá ser distribuído ao time de desenvolvimento, rapidamente.

Concluímos também que o processo de criação de templates de projetos é bastante simples e eficaz, permitindo economizar um tempo considerável na fase inicial de programação.

Um grande abraço e até o próximo artigo!

 

Referências

MSDN – “How to: Create Starter Kits” – (inglês)

msdn2.microsoft.com/en-us/library/ms364046(vs.80).aspx

MSDN Wiki – “Introdução aos Starter Kits” – (português)

msdnwiki.microsoft.com/pt-br/mtpswiki/ms247071(VS.80).aspx

 

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?