このプロジェクトについて

Purview.Aspire.ResourceKitは、.NET Aspire AppHostのリソース構成を、強く型付けされたテストしやすいクラスとして構造化するためのソースジェネレーター搭載フレームワークです。 ## 目的 AppHostアプリケーションが大きくなると、リソース設定を保守可能かつ発見しやすい状態に保つことが難しくなります。ResourceKitは、構成ロジックを焦点を絞ったリソースクラスへ移し、配線を自動生成することでこの課題に対処します。 ## 主な利点 - **よりクリーンなAppHostコード**: リソースロジックが単一のセットアップメソッドではなく専用クラスに分割されます - **強い型付けとIntelliSense**: 文字列ベースの構成をコンパイル時の安全性で置き換えます - **生成される配線**: ホスト/リソースオプションと登録コードを自動生成します - **予測可能なライフサイクル**: リソース間の依存関係を管理するためにBuild then Configureパターンに従います - **テスト容易性**: 単体テスト向けにオプションの上書きと分離されたリソース構成をサポートします ## 使用モデル 属性を使用してホストキットとリソースクラスを定義します: ```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は2段階のライフサイクルを実装しています: 1. **Build**: 個々のリソースを構築します(例: `AddProject`、`AddRedis`) 2. **Configure**: 参照、バインディング、リソース間配線を通じてリソースを接続します 有効化はリソースがいつアクティブになるかを制御します: - `IsEnabled`: 通常は生成されたオプションから取得される永続化トグル - `IsResourceEnabled(builder)`: 環境、構成、または公開モードを評価するためのランタイムフック リソースが無効と評価された場合、そのBuildフェーズとConfigureフェーズの両方が完全にスキップされます。 ## 生成される成果物 `[HostKit]`および`[ResourceDefinition]`宣言から、ソースジェネレーターは次を生成します: - ホストリソースの基底クラス - ホスト上のリソースプロパティ - ホストレベルおよびリソースごとのオプション(有効な場合) - ホストキットを構築、構成、登録するためのAppHost拡張メソッド ## Agent Skills このパッケージは`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) - [Lifecycle-Build-Configureガイド](docs/wiki/Lifecycle-Build-Configure.md) - [有効化のドキュメント](docs/wiki/Enablement.md) - [構成とオプション](docs/wiki/Configuration-and-Options.md) - [診断とトラブルシューティング](docs/wiki/Diagnostics.md) - [例: 生成 vs 手動](docs/wiki/Examples.md)