Sobre el proyecto

Purview.Aspire.ResourceKit es un framework impulsado por generación de código fuente para estructurar la composición de recursos de .NET Aspire AppHost como clases fuertemente tipadas y fáciles de probar. ## Propósito Cuando las aplicaciones AppHost crecen, mantener la configuración de recursos de forma mantenible y reconocible se vuelve un desafío. ResourceKit aborda esto trasladando la lógica de composición a clases de recursos enfocadas y generando automáticamente la infraestructura de conexión. ## Beneficios clave - **Código AppHost más limpio**: la lógica de recursos se divide en clases dedicadas en lugar de métodos de configuración monolíticos - **Tipado fuerte e IntelliSense**: reemplaza la configuración basada en cadenas por seguridad en tiempo de compilación - **Cableado generado**: produce automáticamente opciones de host/recurso y código de registro - **Ciclo de vida predecible**: sigue un patrón Build y luego Configure para gestionar dependencias entre recursos - **Capacidad de prueba**: admite anulaciones de opciones y composición aislada de recursos para pruebas unitarias ## Modelo de uso Defina un host kit y clases de recursos usando atributos: ```csharp [HostKit] partial class ShopHostKit; [ResourceDefinition<ProjectResource>("api")] partial class ApiResourceKit { protected override IResourceBuilder<ProjectResource> BuildResource(IDistributedApplicationBuilder builder) => builder.AddProject<Projects.Example_Service>(Name); } ``` Luego regístrelo en el AppHost: ```csharp var builder = DistributedApplication.CreateBuilder(args); builder.AddAspireResourceKit(); ``` Se genera un método de extensión a partir de los metadatos del host (por ejemplo, `AddAspireResourceKit()`). ## Ciclo de vida ResourceKit implementa un ciclo de vida de dos fases: 1. **Build**: construye recursos individuales (por ejemplo, `AddProject`, `AddRedis`) 2. **Configure**: conecta recursos entre sí mediante referencias, enlaces y cableado entre recursos Los controles de habilitación determinan cuándo se activan los recursos: - `IsEnabled`: conmutador persistido que normalmente proviene de opciones generadas - `IsResourceEnabled(builder)`: hook en tiempo de ejecución para evaluar el entorno, la configuración o el modo de publicación Si un recurso se evalúa como deshabilitado, sus fases Build y Configure se omiten por completo. ## Artefactos generados A partir de las declaraciones `[HostKit]` y `[ResourceDefinition]`, el generador de código fuente produce: - Una clase base de recurso de host - Propiedades de recurso en el host - Opciones a nivel de host y por recurso (cuando están habilitadas) - Un método de extensión de AppHost para construir, configurar y registrar el host kit ## Agent Skills El paquete puede incluir [Agent Skills](https://agentskills.io/) mediante archivos `skills/**/SKILL.md`. Durante la compilación, estos se copian a `.agents/skills/` en el proyecto consumidor. Desactívelo con: ```xml <EnableAgentFolderInPackage>false</EnableAgentFolderInPackage> ``` ## Estructura del repositorio - `src/src/ResourceKit`: código fuente del paquete de tiempo de ejecución - `src/src/SourceGeneration`: generador de código fuente de Roslyn - `src/src/Example.*`: aplicaciones Aspire de ejemplo - `src/tests/*`: pruebas unitarias y de integración ## Documentación - [Página principal](https://purview.dev/projects/aspire-resourcekit/) - [Introducción](docs/wiki/Getting-Started.md) - [Guía de ciclo de vida Build-Configure](docs/wiki/Lifecycle-Build-Configure.md) - [Documentación de habilitación](docs/wiki/Enablement.md) - [Configuración y opciones](docs/wiki/Configuration-and-Options.md) - [Diagnóstico y solución de problemas](docs/wiki/Diagnostics.md) - [Ejemplos: generado vs manual](docs/wiki/Examples.md)