这个项目能做什么

Purview.Aspire.ResourceKit 是一个由源生成器驱动的框架,用于将 .NET Aspire AppHost 资源组合结构化为强类型、易于测试的类。 ## 目的 当 AppHost 应用程序规模增大时,保持资源设置的可维护性和可发现性变得具有挑战性。ResourceKit 通过将组合逻辑移入专注的资源类并自动生成管道代码来解决此问题。 ## 主要优势 - **更清晰的 AppHost 代码**:资源逻辑拆分为专用类,而非单体设置方法 - **强类型和 IntelliSense**:用编译时安全性取代基于字符串的配置 - **自动生成的接线**:自动生成主机/资源选项和注册代码 - **可预测的生命周期**:遵循先构建后配置的模式来管理资源间依赖关系 - **可测试性**:支持选项覆盖和隔离的资源组合,便于单元测试 ## 使用模型 使用特性定义主机套件和资源类: ```csharp [HostKit] partial class ShopHostKit; [ResourceDefinition<ProjectResource>("api")] partial class ApiResourceKit { protected override IResourceBuilder<ProjectResource> BuildResource(IDistributedApplicationBuilder builder) => builder.AddProject<Projects.Example_Service>(Name); } ``` 然后在 AppHost 中注册: ```csharp var builder = DistributedApplication.CreateBuilder(args); builder.AddAspireResourceKit(); ``` 根据主机元数据生成扩展方法(例如 `AddAspireResourceKit()`)。 ## 生命周期 ResourceKit 实现两阶段生命周期: 1. **构建**:构造单个资源(例如 `AddProject`、`AddRedis`) 2. **配置**:通过引用、绑定和跨资源接线将资源连接在一起 启用控制资源何时激活: - `IsEnabled`:持久化开关,通常源自生成的选项 - `IsResourceEnabled(builder)`:用于评估环境、配置或发布模式的运行时钩子 如果资源评估为禁用,则其构建和配置阶段都会被完全跳过。 ## 生成的产物 从 `[HostKit]` 和 `[ResourceDefinition]` 声明中,源生成器生成: - 主机资源基类 - 主机上的资源属性 - 主机级和每个资源的选项(当启用时) - 用于构建、配置和注册主机套件的 AppHost 扩展方法 ## 代理技能 该包可以通过 `skills/**/SKILL.md` 文件捆绑 [Agent Skills](https://agentskills.io/)。在构建期间,这些文件会复制到消费项目的 `.agents/skills/` 目录。可通过以下方式禁用: ```xml <EnableAgentFolderInPackage>false</EnableAgentFolderInPackage> ``` ## 仓库结构 - `src/src/ResourceKit`:运行时包源码 - `src/src/SourceGeneration`:Roslyn 源生成器 - `src/src/Example.*`:示例 Aspire 应用程序 - `src/tests/*`:单元和集成测试 ## 文档 - [主页](https://purview.dev/projects/aspire-resourcekit/) - [入门指南](docs/wiki/Getting-Started.md) - [生命周期-构建-配置指南](docs/wiki/Lifecycle-Build-Configure.md) - [启用文档](docs/wiki/Enablement.md) - [配置和选项](docs/wiki/Configuration-and-Options.md) - [诊断和故障排除](docs/wiki/Diagnostics.md) - [示例:生成与手动](docs/wiki/Examples.md)