Sobre o projeto

Purview.Aspire.ResourceKit é uma estrutura baseada em gerador de código-fonte para estruturar a composição de recursos do .NET Aspire AppHost como classes fortemente tipadas e testáveis. ## Objetivo Quando as aplicações AppHost crescem, manter a configuração de recursos sustentável e descobrível torna-se desafiador. O ResourceKit resolve isso movendo a lógica de composição para classes de recursos focadas e gerando automaticamente a infraestrutura. ## Principais benefícios - **Código AppHost mais limpo**: a lógica de recursos divide-se em classes dedicadas em vez de métodos de configuração monolíticos - **Tipagem forte e IntelliSense**: substitui a configuração baseada em strings por segurança em tempo de compilação - **Ligação gerada**: produz automaticamente opções de host/recurso e código de registo - **Ciclo de vida previsível**: segue um padrão Build e depois Configure para gerir dependências entre recursos - **Testabilidade**: suporta substituições de opções e composição isolada de recursos para testes unitários ## Modelo de utilização Defina um host kit e classes 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); } ``` Depois registe no AppHost: ```csharp var builder = DistributedApplication.CreateBuilder(args); builder.AddAspireResourceKit(); ``` Um método de extensão é gerado a partir dos metadados do seu host (por exemplo, `AddAspireResourceKit()`). ## Ciclo de vida O ResourceKit implementa um ciclo de vida em duas fases: 1. **Build**: construir recursos individuais (por exemplo, `AddProject`, `AddRedis`) 2. **Configure**: ligar recursos entre si através de referências, bindings e ligação entre recursos Os controlos de ativação determinam quando os recursos são ativados: - `IsEnabled`: alternância persistida, normalmente obtida a partir de opções geradas - `IsResourceEnabled(builder)`: hook de runtime para avaliar ambiente, configuração ou modo de publicação Se um recurso for avaliado como desativado, tanto a sua fase Build como Configure são totalmente ignoradas. ## Artefactos gerados A partir das declarações `[HostKit]` e `[ResourceDefinition]`, o gerador de código-fonte produz: - Uma classe base de recurso de host - Propriedades de recursos no host - Opções ao nível do host e por recurso (quando ativadas) - Um método de extensão do AppHost para construir, configurar e registar o host kit ## Agent Skills O pacote pode incluir [Agent Skills](https://agentskills.io/) através de ficheiros `skills/**/SKILL.md`. Durante a compilação, estes são copiados para `.agents/skills/` no projeto consumidor. Desative com: ```xml <EnableAgentFolderInPackage>false</EnableAgentFolderInPackage> ``` ## Estrutura do repositório - `src/src/ResourceKit`: código-fonte do pacote de runtime - `src/src/SourceGeneration`: gerador de código-fonte Roslyn - `src/src/Example.*`: aplicações Aspire de exemplo - `src/tests/*`: testes unitários e de integração ## Documentação - [Página inicial](https://purview.dev/projects/aspire-resourcekit/) - [Introdução](docs/wiki/Getting-Started.md) - [Guia Lifecycle-Build-Configure](docs/wiki/Lifecycle-Build-Configure.md) - [Documentação de ativação](docs/wiki/Enablement.md) - [Configuração e opções](docs/wiki/Configuration-and-Options.md) - [Diagnóstico e resolução de problemas](docs/wiki/Diagnostics.md) - [Exemplos: gerado vs manual](docs/wiki/Examples.md)