Об этом проекте

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 реализует двухфазный жизненный цикл: 1. **Build**: Создание отдельных ресурсов (например, `AddProject`, `AddRedis`) 2. **Configure**: Связывание ресурсов через ссылки, привязки и межресурсные связи Включение управляет активацией ресурсов: - `IsEnabled`: Сохраняемый переключатель, обычно получаемый из сгенерированных параметров - `IsResourceEnabled(builder)`: Перехватчик выполнения для оценки среды, конфигурации или режима публикации Если ресурс оценивается как отключенный, оба этапа (Build и Configure) полностью пропускаются. ## Сгенерированные артефакты На основе объявлений `[HostKit]` и `[ResourceDefinition]` генератор исходного кода создает: - Базовый класс ресурса хоста - Свойства ресурсов на хосте - Параметры на уровне хоста и для каждого ресурса (при включении) - Метод расширения AppHost для построения, настройки и регистрации хост-набора ## Навыки агента Пакет может включать [Agent Skills](https://agentskills.io/) через файлы `skills/**/SKILL.md`. Во время сборки они копируются в `.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) - [Примеры: сгенерированные и ручные](docs/wiki/Examples.md)