Partager via


Project Template e Item Template - Customizações no ambiente de desenvolvimento.

Olá pessoal, tudo certo?

Voltando ao assunto principal, retomamos nossa discussão sobre templates e padrões para o ambiente de desenvolvimento. Lembrando sempre que uma das atividades do time de arquitetura é direcionar a equipe de desenvolvimento na adoção de boas práticas na produção de software, com qualidade e produtividade.

Recentemente, tive uma discussão com um time de arquitetos de um cliente, que questionava exatamente as alternativas para a padronização e uso de templates na plataforma Microsoft. Assim, perguntavam sobre customizações do ambiente de desenvolvimento, ou seja, customizações sobre o próprio Visual Studio, afim de direcionar o desenvolvedor no momento da criação de código. Focando a versão 2005, citamos 3 mecanismos básicos:

  1. Construção de templates de projeto e templates de itens de projeto;
  2. Customização de funcionalidades através do SDK v4.0 para o Visual Studio 2005;
  3. Construção de guias de automação para o desenvolvimento de soluções;

Neste post, vamos falar iniciamente sobre o primeiro modo, a construção de templates no Visual Studio 2005.

1. Construção de templates de projeto e templates de itens de projeto

A construção de templates é feita através da funcionalidade "Export Template" do Visual Studio. Esse recurso permite a geração de um pacote .ZIP, que agrupa arquivos de recursos, fontes, imagens e links de referência de um projeto ou arquivo fonte, que poderá ser reutilizado pelos desenvolvedores de forma integrada ao Visual Studio.

Você encontra esse recurso no menu File do IDE do Visual Studio, veja:

image

A partir de um projeto modelo selecionado, é possível criar um template de projeto ou de item, como mostrado na caixa de diálogo abaixo:

image

Para o exemplo de geração de um template de projeto, é gerado um arquivo .ZIP, contendo os arquivos de recursos e fontes componentes do projeto. Também é adicionado a esse pacote o arquivo com as referências e lista de componentes do template. Esse arquivo vem com extensão ".vstemplate". Veja o conteúdo de um pacote de template aqui:

image 

Um exemplo desse arquivo ".vstemplate" é dado a abaixo:

<VSTemplate Version="2.0.0" xmlns=" https://schemas.microsoft.com/developer/vstemplate/2005" Type="Project">
<TemplateData>
<Name>ConsoleAppDemo - Lab</Name>
<Description>ConsoleAppDemo - Lab</Description>
<ProjectType>CSharp</ProjectType>
<ProjectSubType>
</ProjectSubType>
<SortOrder>1000</SortOrder>
<CreateNewFolder>true</CreateNewFolder>
<DefaultName>ConsoleAppDemo - Lab</DefaultName>
<ProvideDefaultName>true</ProvideDefaultName>
<LocationField>Enabled</LocationField>
<EnableLocationBrowseButton>true</EnableLocationBrowseButton>
<Icon>__TemplateIcon.ico</Icon>
</TemplateData>
<TemplateContent>

<Project TargetFileName="ConsoleAppDemo1.csproj" File="ConsoleAppDemo1.csproj" ReplaceParameters="true">
<ProjectItem ReplaceParameters="true" TargetFileName="Program.cs">Program.cs</ProjectItem>
<Folder Name="Properties" TargetFolderName="Properties">
<ProjectItem ReplaceParameters="true" TargetFileName="AssemblyInfo.cs">AssemblyInfo.cs</ProjectItem>
</Folder>
</Project>
</TemplateContent>
</VSTemplate>

No template acima, temos um padrão de projeto baseado no arquivo ConsoleAppDemo1.csproj, que foi o projeto base a partir do qual geramos o template. Isso aparece no tag <TemplateContent> .

Outros exemplos de arquivos de template podem agrupar soluções com vários projetos, como vemos a seguir:

<?xml version="1.0" encoding="utf-8" ?>
<VSTemplate Version="2.0.0" xmlns="https://schemas.microsoft.com/developer/vstemplate/2005" Type="ProjectGroup">
<TemplateData>
<DefaultName>Template Solution Test - ClassLibraries 1 e 2</DefaultName>
<Name>Template Solution Test - ClassLibraries 1 e 2</Name>
<Description>Template Solution Test - ClassLibraries 1 e 2</Description>
<Icon>Default.ico</Icon>
<ProjectType>CSharp</ProjectType>
<CreateNewFolder>false</CreateNewFolder>
<DefaultName></DefaultName>
<ProvideDefaultName>false</ProvideDefaultName>
</TemplateData>
<TemplateContent>
<ProjectCollection>

<ProjectTemplateLink ProjectName="ClassLibrary1">
.\ClassLibrary1\ClassLibrary1.vstemplate
</ProjectTemplateLink>
<ProjectTemplateLink ProjectName="ClassLibrary2">
.\ClassLibrary2\ClassLibrary2.vstemplate
</ProjectTemplateLink>
</ProjectCollection>
</TemplateContent>

</VSTemplate>

No exemplo acima, note que o tag <TemplateContent> contém agora o tag <ProjectCollection>, onde encontramos a referência para dois templates de projetos previamente gerados:

<ProjectTemplateLink ProjectName="ClassLibrary1">
.\ClassLibrary1\ClassLibrary1.vstemplate
</ProjectTemplateLink>

<ProjectTemplateLink ProjectName="ClassLibrary2">
.\ClassLibrary2\ClassLibrary2.vstemplate
</ProjectTemplateLink>

Assim, criando os templates de projetos individuais, podemos gerar um template de solução, que agrupa vários projetos, para customizações mais completas. O pacote .zip final com o template gerado é colocado na pasta:

"C:\Documents and Settings\user\My Documents\Visual Studio 2005\My Exported Templates"

Mas ainda é possível criar novas pastas, agrupando templates por projetos, departamentos, funcionalidades, etc. No momento da criação de uma nova solução ou projeto, os templates previamente gerados são oferecidos ao desenvolvedor, que agora não inicia o desenvolvimento do zero. Até aqui, falamos de templates de projetos, mas o mesmo mecanismo funciona para templates de arquivos ou recursos individuais de um projeto, chamados de Item Template.

Uma boa referência sobre a criação de templates você encontra aqui, com uma série de links sobre os tags e funcionalidades dos arquivos " .vstemplates":

Create Reusable Project And Item Templates For Your Development Team
https://msdn.microsoft.com/msdnmag/issues/06/01/codetemplates/default.aspx

No próximo post, vamos falar das customizações sobre o SDK v4.0 do Visual Studio 2005.

Por enquanto é só! Até o próximo post :)

Waldemir.

Comments

  • Anonymous
    January 15, 2008
    PingBack from http://msdnrss.thecoderblogs.com/2008/01/15/project-template-e-item-template-customizacoes-no-ambiente-de-desenvolvimento/

  • Anonymous
    September 26, 2008
    The comment has been removed

  • Anonymous
    September 26, 2008
    The comment has been removed

  • Anonymous
    January 20, 2009
    Olá. Cheguei nesse site procurando por maneiras de criar template para o VS 2005. Tenho um template que baixei do endereço: http://download.microsoft.com/download/f/2/7/f279e71e-efb0-4155-873d-5554a0608523/VBFusion05.exe, mas está em VB.NET. Gostaria de fazer uma versão em C#. É possível fazer uma reversa do template? Obrigado!

  • Anonymous
    January 20, 2009
    Olá Marcos, tudo certo? Pense que o template é formato por dois tipos de arquivos: o .vstemplate, que descreve os componentes de software do template e o arquivos do projeto, que formam o projeto mesmo, seja em VB.NET ou CS. Você pode manualmente alterar os componentes descritos no arquivo .vstemplate, atualizando ou modificando a composição de arquivos do template. Mas para converter o projeto interno do template, você vai precisar usar uma ferramenta de conversão, fora do template. Existem algumas no mercado, como a http://www.vbconversions.net/. Assim, obtenha os vários exemplos de projeto exportados em VB.NET a partir do template, converta-os para CSharp manualmente ou com alguma ferramenta e na sequência, crie novos templates você mesmo, para seus futuros projetos em CSharp. Parece divertido :) Um abraço! Waldemir.