Criando templates no Visual Studio
O nosso dia a dia como dev é uma grande correria pingando de um projeto para outro, e com isso vem as copias de estruturas e de códigos existente para criar uma nova funcionalidade, basicamente copiamos o esqueleto de arquivos e depois renomearmos para ai começar a desenvolver o que realmente importa, isso é tão natural e também muito repetitivo.
Seria uma maravilha se simplesmente apenas com um clique no menu New Item e a escolha de um arquivo o nosso amigo vs2019 criasse toda a estrutura para nós.
Então comemore pois esse dia chegou, neste artigo vou te ensinar como você pode melhorar a produtividade do seu dia a dia, fazendo você deixar de copiar e colar código e criar templates de projeto para facilitar o desenvolvimento de novas funcionalidades.
Mão na massa:
Basicamente estaremos criando um simples template um serviço onde será criado a partir de uma ção do vs2019 os arquivos:
- Interface (onde fica declarado a assinatura do metodo)
- Classe de Request (basicamente é o objeto que será enviado para este serviço)
- Classe de implementação (Onde será implementada a interface criada enviando como parametro o request).
É algo bem proximo do recurso de scaffold no ASPNET CORE MVC onde é gerado os controllers com as ações de forma atomatica.
Primeiro passo:
Crie um projeto do tipo Console Application para ficar mais fácil de criarmos os arquivos que envolvem a nossa automação de template.
Vou criar o projeto via vs2019, porem nada impede de ser criado via dotnet CLI.
Após o projeto estar criado, iremos realizar a seguinte ação:
Crie uma pasta chamada Template e dentro desta Pasta uma interface chamada IRepository
crie uma interface:
- Interface (pode chama-la como quiser)
No meu caso vou montar esta estrutura:
- IServiceTemplate.cs (interface)
Ficou desta forma:
logo após criar toda a estrutura realize a exportação como template:
navegue até a aba Project→ Export Template:
selecione a opção de Item Template
no caso selecione a interface:
caso queira pode selecionar algumas dependências, pois com isso o arquivo gerado via template já vem com essas importações por exemplo System.Linq.
Realize o preenchimento do nome do seu template e da descrição do mesmo.
No caso existe a possibilidade de colocar um icon customizado, eu não vou colocar pois não é obrigatório, mais você pode colocar o logo da empresa ou do projeto para que se destina este template.
logo após click em Finish
Será aberto uma pasta com um template zip conforme abaixo, realize a copia deste template para outro diretorio onde seja possivel abri-lo no VSCode ou outro editor de sua preferencia:
realize a extração da pasta e abra no vscode, note que foi gerado 3 arquivos:
- Icon (que será exibido no vs2019)
- Classe de template
- Arquivo de configuração do .vstemplate
Agora como o nosso template tem 3 arquivos iremos editar manualmente o vstemplate para aceitar os demais arquivos.
O arquivo padrão de configuração está desta forma:
Vamos editar para esse modelo:
note que existe uma variavel chamada $fileinputname$, que corresponde ao nome do arquivo digitado na criação via vs2019.
Note que você pode definir padrões de nomes de arquivos com prefixo e sufixo, tudo vai de acordo com o padrão do seu projeto.
Logo após adicionar essas linhas de configuração no VSCODE crie os metodos padrões da sua interface como por exemplo o metodo abaixo:
Criei um metodo chamado EXECUTE onde receberá um Servicerequest que será criado via template.
Crie um arquivo chamado ServiceTemplateRequest.cs (pode ser o nome que você desejar) e crie o seguinte codigo dentro deste arquivo:
Essa classe será a classe de request que será passada como parâmetro para o nosso método e para nossa interface.
Na sequencia crie um arquivo chamado ServiceTemplate.cs (pode ser o nome que você desejar), dentro desse arquivo será realizado a implementação da nossa interface conforme o exemplo abaixo:
no caso foi realizado a implementação da interface em conjunto com o metodo Execute que criamos anteriormente.
Após finalizar as configurações e implementações destes arquivos, agora vamos importar esse template dentro do vs2019:
Primeiramente realize o zip desses arquivos, desta forma:
O seu arquivo .zip deverá conter somente os arquivos de template conforme a print abaixo:
Agora dentro do vs2019 navegue até o caminho :
Tools→ Options
Pesquise pela palavra Locations, entre no menu Projects and Solutions, copie o caminho presente no passo 2
abra esse caminho via executar (Tecla Windows + R)
Caso já exista algum zip com o mesmo nome devido ao processo de exportação realizado anteriormente, realize a exclusão do arquivo existente e cole o arquivo que você acabou de gerar o zip.
Caso você queira manter os templates de forma organizada, você pode movimentar para a pasta Visual C# ou para as demais linguagens de sua preferência.
Agora feche o seu vs2019.
Abra novamente no projeto de console
Agora vamos testar o template, crie uma nova pasta chamada TemplateTest, para que possamos criar os arquivos dentro dela.
Logo na sequencia vá ate o menu Add → New Item
Note que o template criado já esta em primeiro, porem caso não esteja pesquise pelo nome na barra de pesquisa do lado direito.
Selecione o template e coloque o nome que desejar, eu vou criar por exemplo um serviço de CEP
Note que nao preciso colocar a extensão '.cs' e nem o prefixo ou sufixo de Service etc..
Note que a estrutura padrão de um Service foi criada com sucesso, agora basta você implementar a sua logica, sem se preocupar em copiar arquivos e estruturas de outros lugares.
Espero que tenha gostado desta dica, acredito que os templates vieram para agregar em nossas vidas, para focarmos no que realmente importa que é gerar valor para o nosso cliente/negocio.
Até a próxima!