Boilerplate Propio: Sin IA, Sin Drenar la Cartera — Parte 3

Boilerplate Propio: Sin IA, Sin Drenar la Cartera — Parte 3 presenta un tutorial práctico para crear plantillas de proyecto .NET reutilizables. En esta entrega final explicamos desde cero cómo diseñar la estructura de una plantilla, parametrizarla y empaquetarla como paquete NuGet. El contenido está orientado a equipos y desarrolladores que buscan acelerar el inicio de proyectos de software a medida y mantener buenas prácticas.
Sobre Q2BSTUDIO Somos Q2BSTUDIO, empresa de desarrollo de software y aplicaciones a medida, especialistas en inteligencia artificial, ciberseguridad y servicios cloud. Ofrecemos soluciones integrales que incluyen servicios cloud aws y azure, servicios inteligencia de negocio y power bi para transformar datos en decisiones. Si buscas desarrollo de aplicaciones a medida visita desarrollo de aplicaciones a medida y para proyectos de inteligencia artificial y agentes IA revisa inteligencia artificial.
Qué lograrás con esta guía Crearás una plantilla que genera una solución con carpetas src tests samples, proyectos principales Company.App y Company.App.Engine opcional, proyectos de pruebas unitarias e integradas configurables, archivos estáticos para una landing page y un template de README reutilizable con símbolos generados.
Resumen rápido de la estructura raíz esperada raíz src Company.App wwwroot index.html css js assets Program.cs Company.App.csproj Company.App.Engine opcional tests UnitTests IntegrationTests samples sample console .editorconfig .gitignore README.md y el archivo de solución Company.App.sln
Primeros pasos desde un directorio vacío Crear carpeta raíz mkdir dotnet-templates y entrar en ella. Añadir archivo csproj para empaquetar plantillas como NuGet creando DotnetTemplates.csproj con las propiedades apropiadas para PackageType Template, PackageId y IncludeContentInPack true. Inicializar git con dotnet new gitignore y git init.
Crear estructura de plantilla Crear carpeta templates o web-app-template y dentro .template.config con template.json. Añadir carpetas src tests samples. Generar la solución con dotnet new sln -n CUSTOM_TEMPLATE_PLACEHOLDER y el proyecto webapi con dotnet new webapi --use-controllers -o src/CUSTOM_TEMPLATE_PLACEHOLDER y el submódulo como biblioteca con dotnet new classlib -o src/CUSTOM_TEMPLATE_PLACEHOLDER.Engine
Proyectos de pruebas Crear proyectos xunit para UnitTests e IntegrationTests con dotnet new xunit -o tests/UnitTests/CUSTOM_TEMPLATE_PLACEHOLDER.UnitTests y dotnet new xunit -o tests/IntegrationTests/CUSTOM_TEMPLATE_PLACEHOLDER.IntegrationTests. Añadir un proyecto sample con dotnet new console -o samples/CUSTOM_TEMPLATE_PLACEHOLDER.Sample.
Añadir proyectos a la solución dotnet sln add src/CUSTOM_TEMPLATE_PLACEHOLDER/CUSTOM_TEMPLATE_PLACEHOLDER.csproj y lo mismo para cada proyecto creado. Verifica el .sln para referencias correctas.
Archivos estáticos y landing page Añade carpeta wwwroot con index.html css y js en el proyecto principal para ofrecer una landing liviana. Estos archivos pueden incluir un ejemplo interactivo como un mini juego F1 y sirven para demostrar la inclusión condicional de recursos estáticos.
template.json básico El archivo template.json debe contener identity name shortName sourceName y tags. Para hacer opcional contenido y generar parámetros define symbols como includeSamples includeUnitTests includeIntegrationTests includeSubmodule useGameMode framework y otros según necesidad. Usa preferNameDirectory true y sourceName CUSTOM_TEMPLATE_PLACEHOLDER para reemplazos automáticos.
Control de inclusión de carpetas usa la sección sources con modifiers para excluir patrones según condiciones. Ejemplos de condiciones: if no includeSamples excluir samples/**; si no includeIntegrationTests excluir tests/IntegrationTests/**; si no includeUnitTests excluir tests/UnitTests/**; si ni unit ni integration excluir tests/**; si no includeSubmodule excluir src/CUSTOM_TEMPLATE_PLACEHOLDER.Engine/** y sus tests; si no useGameMode excluir src/CUSTOM_TEMPLATE_PLACEHOLDER/wwwroot/**.
Parámetro de framework configurable Define symbol framework con datatype choice para permitir net8.0 o net9.0 y usa replaces DOTNET_TARGET_FRAMEWORK. En los archivos .csproj reemplaza TargetFramework por el marcador DOTNET_TARGET_FRAMEWORK para que la plantilla inserte la opción elegida por el usuario.
Símbolos generados y transformaciones Para obtener nombres amigables define símbolos generados como plainTextName para convertir nombres tipo Company.Project en Company Project o con guiones como Company Project - Feature. Usa generadores regex para transformar framework net9.0 en .NET 9.0 y forms para transformaciones adicionales como kebabCase si quieres usar nombres de repositorio en kebab case. Estos valores se insertan con replaces en archivos destino.
README como item template Crea un item template para README con su propio .template.config y template.json de tipo item. Usa placeholders reemplazables como PLAIN_TEXT_NAME y DOTNET_TEMPLATE_VERSION_NUMBER y símbolos derivados para rellenar título descripción framework y URL de repositorio. Instala el ítem con dotnet new install . y créalo en proyectos generados con dotnet new fullsendreadme
Instalar y probar la plantilla Instala la plantilla localmente posicionándote en la carpeta web-app-template y ejecutando dotnet new install .. Para generar un proyecto fuera del directorio de la plantilla usa dotnet new fullsendapi -o NombreProyecto. Ejemplo avanzado para generar con submódulo modo juego e integración en .NET 8 dotnet new fullsendapi --includeSubmodule --includeIntegrationTests --framework net8.0 -o CadillacF1Team.TyreTemperatureMonitor
Empaquetado y publicación Empaqueta la colección de plantillas con dotnet pack -c Release desde la carpeta que contiene DotnetTemplates.csproj. Publica en NuGet con dotnet nuget push bin/Release/NombrePaquete.nupkg --api-key TU_API_KEY --source https://api.nuget.org/v3/index.json. Los usuarios instalarán la plantilla con dotnet new install MiPaquete::1.0.0
Buenas prácticas y recomendaciones Mantén la plantilla modular y documentada, evita placeholders genéricos que puedan causar reemplazos indeseados, prueba la generación en diferentes escenarios y añade tests de ejemplo. Integra control de versiones y continua integración para validar paquetes NuGet antes de publicar. Si trabajas en proyectos corporativos aprovecha las políticas de versiones LTS como net8.0 cuando sea necesario.
Ventajas para empresas y servicios complementarios Con una plantilla bien diseñada ahorras tiempo en arranque de proyectos y aseguras consistencia entre equipos. En Q2BSTUDIO aplicamos estas prácticas en proyectos de software a medida y ofrecemos además servicios de ciberseguridad y pentesting, servicios cloud aws y azure y soluciones de inteligencia de negocio con power bi que complementan el ciclo de desarrollo y despliegue.
Conclusión Esta guía ofrece la hoja de ruta para crear y publicar plantillas .NET completas y parametrizables, incluyendo plantillas de elemento para archivos como README y soporte para múltiples escenarios reales. Si quieres ayuda profesional para implementar estas plantillas en tu flujo de trabajo o integrar despliegues en la nube y capacidades de IA para empresas contacta con nosotros en Q2BSTUDIO para llevar tu proyecto al siguiente nivel.
Comentarios