프로젝트 소개

Purview.Aspire.ResourceKit은 .NET Aspire AppHost 리소스 구성을 강력한 형식의 테스트 친화적 클래스로 구조화하기 위한 소스 생성기 기반 프레임워크입니다. ## 목적 AppHost 애플리케이션이 커질수록 리소스 설정을 유지 관리하고 발견하기 쉽게 유지하는 것이 어려워집니다. ResourceKit은 구성 로직을 집중된 리소스 클래스로 옮기고 연결 코드를 자동으로 생성하여 이 문제를 해결합니다. ## 주요 이점 - **더 깔끔한 AppHost 코드**: 리소스 로직이 단일 설정 메서드 대신 전용 클래스로 분리됩니다 - **강력한 형식 및 IntelliSense**: 문자열 기반 구성을 컴파일 타임 안전성으로 대체합니다 - **생성된 연결**: 호스트/리소스 옵션과 등록 코드를 자동으로 생성합니다 - **예측 가능한 수명 주기**: 리소스 간 종속성 관리를 위해 Build 후 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 확장 메서드 ## 에이전트 스킬 패키지는 `skills/**/SKILL.md` 파일을 통해 [에이전트 스킬](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) - [수명 주기-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)