C# - Exportar e configurar template de projeto


Depois do projeto criado, clica em Project -> Export template

1 - Deixe a opção "Project Template" marcado, next -> desmarca a opção "Automatically import the template into Visual Studio" e finish.

Faça o passo acima para todos os projetos a solution.

2 - Na raiz do diretório onde o VS gerou os templates, coloque o arquivo "MyTemplate.vstemplate" (em anexo nessa dica) e altere conforme a necessidade.

3 - Entre em cada projeto (cada pasta) e altere o arquivo "MyTemplate.vstemplate" para adicionar as seguintes tags logo abaixo da tag "<TemplateData>":

<TemplateData>
    <Hidden>true</Hidden>
    <CreateInPlace>true</CreateInPlace>
    ...
</TemplateData>

4 - Agora verifique todos os arquivos e vai corrigindo os nomes para que o VS possa fazer a referência automaticamente.
Para isso, você pode utilizar dois taghelpers (vamos dizer assim) para auxiliar:

$safeprojectname$ - Nome do projeto digitado na hora da criação + prefixo configurado no passo 2. Por exemplo, <nome_projeto_digitado>.Web, <nome_projeto_digitado>.Models e etc.

$ext_projectname$ - Apenas o nome do projeto digitado na hora da criação.

Como exemplo, segue o conteúdo do csproj do template que utilizei como exemplo para essa dica:

PADRAO_CRUD.Infra.Bootstrap.csproj:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="4.0.1" />
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.1.1" />
    <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="2.1.1" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\$ext_projectname$.Data\$ext_projectname$.Data.csproj" />
    <ProjectReference Include="..\$ext_projectname$.Infra\$ext_projectname$.Infra.csproj" />
    <ProjectReference Include="..\$ext_projectname$.Models\$ext_projectname$.Models.csproj" />
  </ItemGroup>

</Project>

O arquivo Bootstrap.cs:

using AutoMapper;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using $ext_projectname$.Data;
using $ext_projectname$.Models;

namespace $safeprojectname$
{
    public class Bootstrap
    {
        public static void Init(IServiceCollection service, string connectionString)
        {
            service.AddAutoMapper();
            service.AddDbContext<CRUDContext>(options => options.UseSqlServer(connectionString));

            service.AddScoped(typeof(IRepository<>), typeof(Repository<>));
        }
    }
}
Observe que para o "using" foi utilizado $ext_projectname$ para obter apenas o nome do projeto que foi digitado no momento da criação.
E para o namespace foi utilizado o $safeprojectname$ para obter o nome completo dessa classe, que no meu exemplo ficou "StoreOfBuild.Infra.Bootstrap".

5 - Depois de tudo configurado, você deverá ter uma estrutura de diretório parecida com esta (vai depender do seu projeto base):

Agora vamos compactar todo esse conteúdo no formato .zip e dar um nome qualquer, no meu caso ficou "padrao_ddd_light.zip".

6 - Agora vamos copiar esse arquivo .zip para o diretório de templates no VS que fica nesse caminho: C:\Users\<usuario>\Documents\Visual Studio 2017\Templates\ProjectTemplates\Visual C#

7 - Se o VS estiver aberto, feche-o e abra em seguida, vá File -> New -> Project e clique em Visual C#
Navegue na lista de templates ao lado e procure o que acabamos de criar:

O que for digitado em "Name" será o valor atribuído em $ext_projectname$

No meu teste, coloquei o nome de StoreOfBuild e cliquei em OK.
O Visual Studio criou a seguinte estrutura:

Como são vários arquivos que precisam ser modificados, o ideal é que você faça build all e veja se apareceu erros de referências e coisas do tipo, corrige no template e tenta gerar novamente, faça isso até que seja possível compilar tudo sem erros.

De fato é trabalhoso o processo mas depois de pronto isso realmente é uma mão na roda.

É isso aí... 
Abraços... e bons estudos.

c · ‎template · ‎export · ‎visualstudio

Última atualização: 26/06/2018 às 21:26


  • Buscar