Visual Studio 2019: Criando seu próprio template de solução

Victor Fructuoso
4 min readJan 17, 2021

--

Recentemente criei um repositório no GitHub com uma solução que eu costumo utilizar como base para alguns exemplos que utilizam DDD com uma API REST como interface.

Gostaria de hoje demonstrar para vocês como é possível converter uma solução em um template customizado do Visual Studio 2019.

Imaginem que todas as vezes que vocês precisarem criar uma nova solução (que siga os mesmos padrões de uma solução prévia) vocês podem simplesmente criar um projeto novo já com a estrutura pronta, sem que seja necessário criar tudo do zero, ou duplicar o código e perder um bom tempo renomeando um monte de arquivos.

No exemplo de hoje vou usar meu repositório Fructuoso.Template disponível no meu GitHub (https://github.com/fructuoso/Fructuoso.Template)

Com a solução devidamente aberta no Visual Studio 2019, precisamos exportar os projetos que gostaríamos de incluir em nosso template.

Para este exemplo, vamos exportar todos os quatro projetos presentes na solução.

A exportação do projeto como template é feita através do menu Project > Export Template…

Vamos escolher a opção Project Template e selecionar o projeto que queremos exportar.

Como nós ainda modificaremos o template, vamos deixar a opção “Automatically import the template into Visual Studio” desmarcada.

Este procedimento deve ser repetido para todos os quatro projetos.

Ao final do processo de exportação dos projetos, devemos descompactar todos eles criando uma estrutura de pastas semelhante a esta.

Recomendo que deste ponto em diante usemos o Visual Code para realizar o procedimento.

Primeiro será necessário criar um root.vstemplate semelhante ao que temos abaixo.

Leiam a estrutura deste XML, pois ele determina como será a estrutura da nossa solução.

Na linha 17 fazemos a declaração de um parâmetro customizado chamado rootnamespace, guardem este nome pois ele fará toda a diferença para maximizarmos o poder de configuração do nosso template.

O processo de criação de templates, consiste basicamente em exportar o código e fazer uso de algumas variáveis que serão substituídas pelo nome do nosso novo projeto.

No print abaixo, do lado esquerdo temos o template pronto e do lado direito o template apenas exportado, sem nenhuma intervenção.

É possível notar que existem diversas referências ao Fructuoso.Template (nossa solução de origem), nós queremos que o namespace dos nossos projetos reflitam a estrutura da solution onde eles estão inseridos, daí a necessidade do parâmetro rootnamespace.

Obs.: Seria possível já passar o nome completo para o nome do projeto, porém como efeito colateral o nome dos projetos seriam impactados, por exemplo: Se a solution chama Fructuoso.Estoque, o projeto se chamaria Fructuoso.Estoque.WebAPI.

Ao concluir os ajustes é hora de testar o nosso template.

Primeiro vamos compactar a nossa estrutura de pastas gerando um novo .ZIP como o exemplo abaixo.

Agora vamos colocar o template na pasta de templates do nosso usuário:

C:\Users\{username}\Documents\Visual Studio 2019\Templates\ProjectTemplates

Obs.: Caso a pasta ProjectTemplates não exista, basta criar.

E então como mágica…

Nesta API de exemplo, já temos 2 CRUDs totalmente funcionais, Curso e Instrutor.

Temos duas opções, deixá-los como referência, ou removê-los do nosso template para que nossa solução seja criada completamente limpa.

Obs.: O template já pronto foi publicado no github caso queiram utilizar.

Fructuoso.Template/Fructuoso.Template.zip at template · fructuoso/Fructuoso.Template (github.com)

Espero que tenham gostado.

Até a próxima.

Referências:

Create multi-project templates — Visual Studio | Microsoft Docs

--

--