C# के साथ मोनोरिपॉजिटरी: व्यवहार में कोड का संगठन

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

C# के साथ मोनोरिपॉजिटरी: व्यवहार में कोड का संगठन



मोनोरिपॉजिटरी (monorepo) स्रोत कोड प्रबंधन का एक दृष्टिकोण है, जिसमें कंपनी या टीम की सभी परियोजनाएँ एक ही रिपॉजिटरी में संग्रहीत की जाती हैं। C# और .NET की दुनिया में, यह दृष्टिकोण सहयोगी विकास को सरल बनाने, निर्भरता संस्करणों को एकीकृत करने और केंद्रीकृत CI/CD के कारण तेजी से लोकप्रिय हो रहा है। हालांकि, उचित कोड संगठन के बिना, मोनोरिपॉजिटरी अराजकता में बदल सकती है। इस लेख में, हम मोनोरिपॉजिटरी में C# कोड को व्यवस्थित करने के व्यावहारिक तरीकों पर चर्चा करेंगे: फ़ोल्डर संरचना से लेकर बिल्ड सेटअप तक।



1. फ़ोल्डर संरचना: व्यवस्था का आधार



एक सफल मोनोरिपॉजिटरी की ओर पहला कदम एक सुविचारित निर्देशिका पदानुक्रम है। एक सम्मेलन का पालन करने की सिफारिश की जाती है जहाँ प्रत्येक प्रोजेक्ट एक अलग फ़ोल्डर में हो, और सामान्य घटकों को src/shared में रखा जाए। मूल संरचना का उदाहरण:



/monorepo├── src/│   ├── shared/│   │   ├── CommonLib/          # सामान्य उपयोगिताएँ, DTO, इंटरफ़ेस│   │   └── LoggingLib/         # लॉगिंग│   ├── services/│   │   ├── AuthService/        # प्रमाणीकरण माइक्रोसर्विस│   │   └── OrderService/       # ऑर्डर माइक्रोसर्विस│   └── apps/│       ├── WebApi/             # मुख्य वेब एप्लिकेशन│       └── ConsoleApp/         # कंसोल टूल├── tests/│   ├── unit/│   │   ├── CommonLib.Tests/│   │   └── AuthService.Tests/│   └── integration/│       └── IntegrationTests/├── docs/├── scripts/├── .gitignore├── Directory.Build.props└── global.json


मुख्य बिंदु:

  • src/ — सभी परियोजनाओं का स्रोत कोड।
  • shared/ — कई परियोजनाओं द्वारा उपयोग की जाने वाली लाइब्रेरी।
  • services/ — माइक्रोसर्विस या मॉड्यूल।
  • apps/ — अंतिम एप्लिकेशन (Web API, Console, Blazor)।
  • tests/ — परीक्षण, स्रोत कोड से अलग।


ऐसी संरचना कोड को आसानी से खोजने, चक्रीय निर्भरता से बचने और CI/CD सेटअप को सरल बनाने में मदद करती है।



2. Directory.Build.props के साथ प्रोजेक्ट प्रबंधन



मोनोरिपॉजिटरी में, अक्सर सभी परियोजनाओं के लिए सामान्य सेटिंग्स सेट करने की आवश्यकता होती है: .NET संस्करण, सामान्य पैकेज, कोड विश्लेषण नियम। प्रत्येक .csproj में दोहराने के बजाय, रिपॉजिटरी के रूट में Directory.Build.props फ़ाइल का उपयोग करें। उदाहरण:



<Project>  <PropertyGroup>    <TargetFramework>net8.0</TargetFramework>    <ImplicitUsings>enable</ImplicitUsings>    <Nullable>enable</Nullable>    <TreatWarningsAsErrors>true</TreatWarningsAsErrors>  </PropertyGroup>

<ItemGroup> <PackageReference Include="SonarAnalyzer.CSharp" Version="9.*" /> </ItemGroup></Project>


अब प्रत्येक चाइल्ड प्रोजेक्ट स्वचालित रूप से इन सेटिंग्स को प्राप्त करता है। यदि किसी विशिष्ट प्रोजेक्ट के लिए ओवरराइड करने की आवश्यकता है, तो बस उसके .csproj में गुण जोड़ें — उन्हें प्राथमिकता दी जाएगी।



अतिरिक्त रूप से, सामान्य बिल्ड लक्ष्यों (जैसे, बिल्ड के बाद फ़ाइलों की प्रतिलिपि बनाना) के लिए Directory.Build.targets बनाया जा सकता है।



3. निर्भरता प्रबंधन: केंद्रीकृत दृष्टिकोण



मोनोरिपॉजिटरी की मुख्य समस्याओं में से एक पैकेज संस्करणों का टकराव है। .NET 8 में केंद्रीकृत पैकेज प्रबंधन (Central Package Management, CPM) के लिए अंतर्निहित समर्थन आया। इसके लिए, रूट में Directory.Packages.props फ़ाइल बनाएँ:



<Project>  <PropertyGroup>    <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>  </PropertyGroup>  <ItemGroup>    <PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" />    <PackageVersion Include="Serilog" Version="3.1.1" /&g                

ब्लॉग

पुस्तक अनुशंसाएँ