Repository navigation
feat: dependencias a paquetes NuGet en plantillas y publicación del template pack #11
Description
Qué queremos resolver
Los proyectos de Sample y las plantillas (easywinapp, simpleeasywinapp) dependen por ProjectReference de los proyectos EasyWindowsApplication y EasyWindowsApplication.Generators. Eso es correcto en desarrollo, pero los proyectos generados por las plantillas deberían depender de los paquetes NuGet publicados (RandAMediaLabGroup.EasyWindowsApplication y RandAMediaLabGroup.EasyWindowsApplication.Generators), en su última versión publicada (preview o estable).
Además, no existe un paquete de plantillas: hoy se instalan desde carpeta (dotnet new install src\ProjectTemplates\...). Queremos empaquetarlas y publicarlas vía CI como RandAMediaLabGroup.EasyWindowsApplication.Templates, con el mismo patrón preview/estable que core y generators.
Cómo se va a resolver
1. Sample — sin cambios
Mantiene ProjectReference a core + generators como harness de desarrollo.
2. Plantillas — referencias en desarrollo vs. producción
- En el repo,
SimpleEasyWinApp.csprojyEasyWinApp.csprojconservanProjectReference(compilan contra el source). - Se pasa la referencia al generador a una sola línea para permitir el
replacesexacto entemplate.json.
3. template.json de ambas plantillas
Se añaden 4 símbolos replaces que, al instanciar dotnet new, sustituyen:
ProjectReferencecore →<PackageReference Include="RandAMediaLabGroup.EasyWindowsApplication" Version="*-*" />ProjectReferencegenerador →<PackageReference Include="RandAMediaLabGroup.EasyWindowsApplication.Generators" Version="*-*" OutputItemType="Analyzer" ReferenceOutputAssembly="false" /><_EasyWAProj>(path local del repo) → se elimina- línea
IcoGen→<PackageReference Include="RandAMediaLabGroup.EasyWindowsApplication" Version="*-*" />
Resultado: los proyectos generados dependen de los paquetes NuGet más recientes publicados.
4. Template pack src/ProjectTemplates/ProjectTemplates.csproj
Nuevo proyecto de empaquetado (PackageType=Template) con PackageId=RandAMediaLabGroup.EasyWindowsApplication.Templates, que incluye ambas plantillas como contenido (con sus .template.config).
5. CI/CD (workflows existentes dev-release.yml y prod-release.yml)
- Nuevo marcador
ver(tpl): x.y.z-previewen el PR body (versión independiente, como core/gen). - Prioridad de release: core > gen > tpl.
- "Update project versions" fija
<Version>enProjectTemplates.csproj. - Nuevo paso "Build & Pack Templates" (
dotnet pack ... -o ./nupkgs); el publish existente ya empuja todos los nupkg. - Merge → develop: preview. Merge → main: estable.
6. Documentación
- README: instalar plantillas vía
dotnet new install RandAMediaLabGroup.EasyWindowsApplication.Templates. - CONTRIBUTING.md: documentar
ver(tpl).
Verificación
dotnet build src\EasyWindowsApplication.slnx— todo compila contra el source.- Instalar plantillas desde carpeta, generar proyectos y confirmar
PackageReferencecondotnet list <proj> package. dotnet packdel template pack, inspeccionar el nupkg e instalar desde el nupkg para generar un proyecto de prueba.
Archivos afectados
src/ProjectTemplates/EasyWinApp/.template.config/template.jsonsrc/ProjectTemplates/SimpleEasyWinApp/.template.config/template.jsonsrc/ProjectTemplates/EasyWinApp/EasyWinApp.csprojsrc/ProjectTemplates/SimpleEasyWinApp/SimpleEasyWinApp.csprojsrc/ProjectTemplates/ProjectTemplates.csproj(nuevo).github/workflows/dev-release.yml.github/workflows/prod-release.ymlREADME.mdCONTRIBUTING.md
Activity
feat: switch templates to NuGet package references and add template p…