À propos du projet

Purview.Aspire.ResourceKit est un framework alimenté par un générateur de source pour structurer la composition des ressources .NET Aspire AppHost sous forme de classes fortement typées et adaptées aux tests. ## Objectif Lorsque les applications AppHost deviennent plus volumineuses, maintenir la configuration des ressources de manière maintenable et découvrable devient difficile. ResourceKit répond à ce problème en déplaçant la logique de composition vers des classes de ressources ciblées et en générant automatiquement la plomberie. ## Principaux avantages - **Code AppHost plus propre** : la logique des ressources se répartit dans des classes dédiées plutôt que dans des méthodes de configuration monolithiques - **Typage fort et IntelliSense** : remplace la configuration sous forme de chaînes par une sécurité à la compilation - **Câblage généré** : produit automatiquement les options d'hôte/ressource et le code d'enregistrement - **Cycle de vie prévisible** : suit un modèle Build puis Configure pour gérer les dépendances entre ressources - **Testabilité** : prend en charge les substitutions d'options et la composition isolée des ressources pour les tests unitaires ## Modèle d'utilisation Définissez un kit d'hôte et des classes de ressources à l'aide d'attributs : ```csharp [HostKit] partial class ShopHostKit; [ResourceDefinition<ProjectResource>("api")] partial class ApiResourceKit { protected override IResourceBuilder<ProjectResource> BuildResource(IDistributedApplicationBuilder builder) => builder.AddProject<Projects.Example_Service>(Name); } ``` Puis enregistrez dans l'AppHost : ```csharp var builder = DistributedApplication.CreateBuilder(args); builder.AddAspireResourceKit(); ``` Une méthode d'extension est générée à partir des métadonnées de votre hôte (par exemple, `AddAspireResourceKit()`). ## Cycle de vie ResourceKit implémente un cycle de vie en deux phases : 1. **Build** : construire les ressources individuelles (par exemple, `AddProject`, `AddRedis`) 2. **Configure** : relier les ressources entre elles via des références, des liaisons et un câblage inter-ressources Les contrôles d'activation déterminent quand les ressources s'activent : - `IsEnabled` : bascule persistée généralement issue des options générées - `IsResourceEnabled(builder)` : point d'accroche à l'exécution pour évaluer l'environnement, la configuration ou le mode de publication Si une ressource est évaluée comme désactivée, ses phases Build et Configure sont entièrement ignorées. ## Artefacts générés À partir des déclarations `[HostKit]` et `[ResourceDefinition]`, le générateur de source produit : - Une classe de base de ressource d'hôte - Des propriétés de ressource sur l'hôte - Des options au niveau de l'hôte et par ressource (lorsqu'activées) - Une méthode d'extension AppHost pour construire, configurer et enregistrer le kit d'hôte ## Agent Skills Le package peut inclure des [Agent Skills](https://agentskills.io/) via des fichiers `skills/**/SKILL.md`. Lors de la compilation, ceux-ci sont copiés vers `.agents/skills/` dans le projet consommateur. Désactivez avec : ```xml <EnableAgentFolderInPackage>false</EnableAgentFolderInPackage> ``` ## Structure du dépôt - `src/src/ResourceKit` : source du package d'exécution - `src/src/SourceGeneration` : générateur de source Roslyn - `src/src/Example.*` : exemples d'applications Aspire - `src/tests/*` : tests unitaires et d'intégration ## Documentation - [Page d'accueil](https://purview.dev/projects/aspire-resourcekit/) - [Prise en main](docs/wiki/Getting-Started.md) - [Guide Cycle de vie-Build-Configure](docs/wiki/Lifecycle-Build-Configure.md) - [Documentation sur l'activation](docs/wiki/Enablement.md) - [Configuration et options](docs/wiki/Configuration-and-Options.md) - [Diagnostics et dépannage](docs/wiki/Diagnostics.md) - [Exemples : généré vs manuel](docs/wiki/Examples.md)