इस प्रोजेक्ट के बारे में

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 पैकेज `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) - [उदाहरण: जेनरेटेड बनाम मैनुअल](docs/wiki/Examples.md)