Criação e Publicação de Templates .NET Cross-Platform

📌 Tabela de Conteúdo🔗

Introdução🔗

Imagine criar projetos .NET cross-platform em segundos, com Docker, logging, testes unitários🧪 Testes de Unidade para Tratamento de Erros: Previna Falhas Futuras!🧪 Testes de Unidade para Tratamento de Erros: Previna Falhas Futuras!Descubra como implementar testes de unidade focados em tratamento de erros, evitando surpresas em produção e garantindo sistemas confiáveis e robustos. e configurações de ambiente pré-definidas. Templates via NuGet são como receitas mágicas que automatizam workflows e aceleram o onboarding de equipes. Neste guia, você aprenderá a:

O Que São Templates de Projeto? 🧩🔗

Templates são modelos reutilizáveis que definem a estrutura inicial de projetos🌐 LinkedIn para Devs .NET: Perfil que Atrai Recrutadores!🌐 LinkedIn para Devs .NET: Perfil que Atrai Recrutadores!Aprenda a otimizar seu perfil LinkedIn com dicas essenciais para devs .NET. Conquiste oportunidades e destaque suas habilidades!, incluindo arquivos, configurações e dependências. Benefícios:

VantagemImpacto
PadronizaçãoConsistência entre projetos e equipes
ProdutividadeElimina repetição de configurações manuais
Cross-PlatformFunciona em Windows, Linux e macOS
CompartilhamentoDistribuição via NuGet para a comunidade

Criando seu Primeiro Template Cross-Platform 🛠️🔗

Template de API Web (Artigo 1)

mkdir MyApiTemplate
cd MyApiTemplate
dotnet new webapi -n MyApi

Estrutura essencial:

📁 templates
└─ 📁 MyApiTemplate
   ├─ 📄 .template.config/template.json
   ├─ 📁 src
   │  └─ 📁 MyApi
   │     ├─ 📄 Dockerfile
   │     └─ 📄 appsettings.Development.json

Template de Console (Artigo 3)

dotnet new console -o MeuTemplate

Personalize:

Estrutura de um Template .NET 📂🔗

Arquivo template.json (Artigo 1 e 3)

{
  "$schema": "http://json.schemastore.org/template",
  "author": "SeuNome",
  "classifications": ["Web", "API"],
  "identity": "MyApiTemplate",
  "name": "API .NET 8",
  "shortName": "modularapi",
  "sourceName": "MyApi",
  "symbols": {
    "namespace": {
      "type": "parameter",
      "datatype": "string",
      "defaultValue": "MeuProjeto"
    }
  }
}

Elementos Chave🗂️ Dicionários: Acesse Dados por Chaves como um Mestre dos HashMaps!🗂️ Dicionários: Acesse Dados por Chaves como um Mestre dos HashMaps!Aprenda a usar dicionários em C# de modo prático e eficiente. Nosso tutorial mostra criação, acesso e otimização para manipular dados com segurança.:

Configuração Avançada com Condicionais ⚙️🔗

Adicione regras para Docker🐳 Docker 101: Containerize sua API em 15 Minutos!🐳 Docker 101: Containerize sua API em 15 Minutos!Containerize sua API .NET em 15 minutos com Docker. Este tutorial prático ensina a construir e rodar containers de forma simples e eficiente., Redis ou bancos de dados (Artigo 1):

"symbols": {
  "enableDocker": {
    "type": "parameter",
    "datatype": "bool",
    "defaultValue": "true",
    "description": "Habilita Dockerfile"
  }
},
"postActions": [{
  "condition": "(enableDocker)",
  "actionId": "CB387AC0-16D0-4E07-B41A-F1EA616A7CA9",
  "args": {
    "outputPath": "./src/"
  }
}]

Uso:

dotnet new modularapi -n PedidosApi --enableDocker false

Publicando no NuGet como Pacote Global 📦🔗

Passo 1: Empacotamento (Artigo 1 e 2)

dotnet pack MyApiTemplate.csproj -p:NuspecFile=./templates/MyApiTemplate.nuspec

Arquivo .nuspec (Artigo 2):

<package>
  <metadata>
    <id>MyApiTemplate</id>
    <version>1.0.0</version>
    <authors>SeuNome</authors>
    <description>Template para APIs RESTful com Docker e logging.</description>
  </metadata>
  <files>
    <file src="templates/**/*" target="content" />
  </files>
</package>

Passo 2: Publicação

nuget push MyApiTemplate.1.0.0.nupkg -Source https://api.nuget.org/v3/index.json

Utilizando Templates na Vida Real 🚀🔗

Instalação Global:

dotnet new install MyApiTemplate

Criação de Projeto🤝 GitHub Básico: Versionamento para Iniciantes!🤝 GitHub Básico: Versionamento para Iniciantes!Descubra como o GitHub facilita colaboração, versionamento e organização de código com este tutorial prático e essencial para desenvolvedores iniciantes. com Redis:

dotnet new modularapi -n FinanceiroAPI --enableRedis true

Saída:

📦 FinanceiroAPI
├─ 📁 src
│  ├─ 📄 Dockerfile
│  ├─ 📄 appsettings.json
│  └─ 📁 Controllers
├─ 📁 tests
└─ 📄 README.md

Melhores Práticas e Dicas para Templates Eficientes 💡🔗

PráticaDescriçãoFerramentas
Teste Cross-PlatformValide em Windows, Linux e macOSDocker, GitHub Actions
Versionamento SemânticoControle mudanças com Major.Minor.PatchGitVersion
Documentação ClaraInclua README.md com exemplosMarkdown
Parâmetros IntuitivosUse choices para opções pré-definidasJSON Schema
SegurançaEvite dados sensíveis no template.gitignore, user-secrets

Exemplo Prático: Template de API Modular 🔥🔗

Funcionalidades:

Passo a Passo:

1. Crie um template com dotnet new webapi.

2. Adicione Dockerfile multiplataforma🌍 MAUI: Multiplataforma com uma Única Base de Código!🌍 MAUI: Multiplataforma com uma Única Base de Código!Aprenda como criar aplicativos multiplataforma com .NET MAUI. Descubra dicas, exemplos práticos e boas práticas para desenvolver apps nativos usando C#.:

FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
...
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime

3. Configure escolhas de banco de dados:

"symbols": {
  "databaseType": {
    "type": "parameter",
    "datatype": "choice",
    "choices": ["SqlServer", "PostgreSQL"],
    "defaultValue": "SqlServer"
  }
}

Uso Final:

dotnet new modularapi -n LojaAPI --databaseType PostgreSQL

Considerações Finais🔗

Templates .NET cross-platform são ferramentas poderosas para padronizar projetos🌐 LinkedIn para Devs .NET: Perfil que Atrai Recrutadores!🌐 LinkedIn para Devs .NET: Perfil que Atrai Recrutadores!Aprenda a otimizar seu perfil LinkedIn com dicas essenciais para devs .NET. Conquiste oportunidades e destaque suas habilidades! e acelerar o desenvolvimento. Ao empacotá-los via NuGet, você não só otimiza seu fluxo, mas também contribui para a comunidade.

Próximos Passos:

Transforme seu boilerplate em um produto compartilhável e leve eficiência⏱️ Testes de Performance: Garanta Velocidade Além da Funcionalidade!⏱️ Testes de Performance: Garanta Velocidade Além da Funcionalidade!Descubra como medir, diagnosticar e otimizar performance em aplicações .NET com dicas práticas e ferramentas essenciais para devs. para novos projetos! 🚀

Autor: Marcelo V. Souza - Engenheiro de Sistemas e Entusiasta em IoT e Desenvolvimento de Software, com foco em inovação tecnológica.

Referências🔗

Compartilhar artigo

Artigos Relacionados