Skip to content

feat: dependencias a paquetes NuGet en plantillas y publicación del template pack #11

Closed
2 of 2 issues completed

Description

@cl2raul66

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.csproj y EasyWinApp.csproj conservan ProjectReference (compilan contra el source).
  • Se pasa la referencia al generador a una sola línea para permitir el replaces exacto en template.json.

3. template.json de ambas plantillas

Se añaden 4 símbolos replaces que, al instanciar dotnet new, sustituyen:

  • ProjectReference core → <PackageReference Include="RandAMediaLabGroup.EasyWindowsApplication" Version="*-*" />
  • ProjectReference generador → <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-preview en el PR body (versión independiente, como core/gen).
  • Prioridad de release: core > gen > tpl.
  • "Update project versions" fija <Version> en ProjectTemplates.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

  1. dotnet build src\EasyWindowsApplication.slnx — todo compila contra el source.
  2. Instalar plantillas desde carpeta, generar proyectos y confirmar PackageReference con dotnet list <proj> package.
  3. dotnet pack del template pack, inspeccionar el nupkg e instalar desde el nupkg para generar un proyecto de prueba.

Archivos afectados

  • src/ProjectTemplates/EasyWinApp/.template.config/template.json
  • src/ProjectTemplates/SimpleEasyWinApp/.template.config/template.json
  • src/ProjectTemplates/EasyWinApp/EasyWinApp.csproj
  • src/ProjectTemplates/SimpleEasyWinApp/SimpleEasyWinApp.csproj
  • src/ProjectTemplates/ProjectTemplates.csproj (nuevo)
  • .github/workflows/dev-release.yml
  • .github/workflows/prod-release.yml
  • README.md
  • CONTRIBUTING.md

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions