समस्या हमारे संगठन में, हम विभिन्न वेब सेवाओं के साथ कई GitHub रिपॉजिटरी चला रहे हैं। इन सभी परियोजनाओं को कोड स्टाइलिंग के लिए सामान्य नियमों की आवश्यकता होती है। हम सही तरीके से आगे बढ़े और एक सर्विस टेम्प्लेट प्रोजेक्ट बनाया जो सभी .NET समाधानों का आधार है और एक सामान्य आर्किटेक्चर को परिभाषित करता है। इसमें सही नामकरण और संदर्भों के साथ परियोजनाओं का एक समूह होता है। हालाँकि, हम गलत तरीके से चले गए और फ़ाइल को हर नए रिपॉजिटरी में कॉपी कर लिया। जब भी फ़ाइल डेवलपर की ज़रूरतों के अनुरूप नहीं होती है तो उसे संशोधित करने का प्रलोभन दिया जाता था। और हमने यह गलती की। .editorconfig .editorconfig एक सामान्य फ़ाइल कैसे बनाई जाए और इसे कई रिपॉजिटरी में कैसे वितरित किया जाए, इस बारे में इंटरनेट पर अधिक जानकारी नहीं है। देव भावना ने बताया कि यह एक NuGet पैकेज होना चाहिए। समस्या को गुगल करने के लंबे समय के बाद, हमें समाधान मिला। को धन्यवाद जिन्होंने अपनी परियोजना के लिए उसी मुद्दे को हल किया। .editorconfig यह एडम क्रेवन क्यों EditorConfig EditorConfig विभिन्न संपादकों और IDE में एक ही प्रोजेक्ट पर काम करने वाले कई डेवलपर्स के लिए लगातार कोडिंग शैलियों को बनाए रखने में मदद करता है। EditorConfig प्रोजेक्ट में कोडिंग शैलियों को परिभाषित करने के लिए और का एक संग्रह शामिल है जो संपादकों को फ़ाइल प्रारूप को पढ़ने और परिभाषित शैलियों का पालन करने में सक्षम बनाता है। EditorConfig फ़ाइलें आसानी से पठनीय हैं और वे संस्करण नियंत्रण प्रणालियों के साथ अच्छी तरह से काम करती हैं। एक फ़ाइल स्वरूप टेक्स्ट संपादक प्लगइन्स .NET दुनिया में, कोड विश्लेषण नियमों में विभिन्न कॉन्फ़िगरेशन विकल्प होते हैं। आप इन विकल्पों को निम्न विश्लेषक कॉन्फ़िगरेशन फ़ाइलों में से एक में कुंजी-मान जोड़े के रूप में निर्दिष्ट करते हैं: फ़ाइल: फ़ाइल-आधारित या फ़ोल्डर-आधारित कॉन्फ़िगरेशन विकल्प। EditorConfig कॉन्फ़िग फ़ाइल: प्रोजेक्ट-स्तरीय कॉन्फ़िगरेशन विकल्प। उपयोगी जब कुछ प्रोजेक्ट फ़ाइलें प्रोजेक्ट फ़ोल्डर के बाहर रहती हैं। ग्लोबल एनालाइज़र आप निम्न सिंटैक्स के साथ EditorConfig फ़ाइल में कंपाइलर चेतावनियों या विश्लेषक नियमों के लिए गंभीरता सेट कर सकते हैं: dotnet_diagnostic.<rule ID>.severity = <severity> किसी EditorConfig फ़ाइल में किसी नियम की को सेट करना किसी नियम सेट में या समाधान एक्सप्लोरर में सेट की गई किसी भी गंभीरता पर प्राथमिकता लेता है। गंभीरता कुछ परियोजनाओं में, स्थानीय और वैश्विक कॉन्फ़िगरेशन फ़ाइलों का मिश्रण होता है। इसके अलावा, इस लेख में अनुभाग में निर्दिष्ट .NET दुनिया में भी EditorConfg की कुछ सीमाएँ हैं। हमने दोनों तरीकों की कोशिश की और इन दो दृष्टिकोणों के साथ आगे-पीछे हुए। और अंत में हमारी परियोजनाओं के लिए केवल EditoConfig का उपयोग करने का एक आसान तरीका स्थानांतरित करने का निर्णय लिया। सीमा समाधान सबसे पहले चीज़ें, आपको NuGet पैकेज के लिए एक नया C# लाइब्रेरी प्रोजेक्ट बनाने की आवश्यकता है। आइए इसे कहते हैं। इस परियोजना में निम्नलिखित फाइलें होंगी: MyProject.EditorConfig फ़ाइल .props फ़ाइल .csproj फ़ाइल .editorconfig .प्रोप फ़ाइल आपको PropertyGroup को निम्नलिखित गुणों के साथ सही मान पर सेट करना होगा: <PropertyGroup> <EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild> <EnableNETAnalyzers>true</EnableNETAnalyzers> </PropertyGroup> - EditorConfig फ़ाइल में निर्दिष्ट को बिल्ड के हिस्से के रूप में जांचने की अनुमति देता है; EnforceCodeStyleInBuild कोड शैली नियमों , बल्कि .NET के पुराने संस्करणों का समर्थन करने के लिए इसे सही पर सेट करें; EnableNETAnalyzers .NET 5.0 के लिए डिफ़ॉल्ट रूप से सत्य है जैसा कि EditorConfig की सीमाओं में से एक यह है कि कुछ नियमों में है। कोई नहीं और एक EditorConfig फ़ाइल में निर्दिष्ट नहीं किया जा सकता है। यदि आप हमारी तरह ग्लोबल एनालाइज़र कॉन्फिग फ़ाइल का उपयोग नहीं करते हैं, तो आपके पास उन नियमों को फ़ाइल में अक्षम करने का विकल्प होगा: Location.None .props <PropertyGroup> <NoWarn>$(NoWarn);CA1014</NoWarn> </PropertyGroup> NuGet पैकेज फ़ोल्डर संरचना के भीतर से कॉपी करने के लिए फ़ाइल का स्थान निर्दिष्ट करें: .editorconfig <ItemGroup> <EditorConfigFilesToCopy Include="$(MSBuildThisFileDirectory)../content/Rules/.editorconfig" /> </ItemGroup> विभिन्न प्लेटफार्मों पर फ़ाइल पथ स्ट्रिंग में और प्रतीकों से सावधान रहें। हमें वास्तव में यह पता लगाने में काफी समय लगा कि फ़ाइल कॉपी क्यों नहीं की जाती है। \ / .editorconfig बनाया जा रहा है जो .NET प्रोजेक्ट के फ़ोल्डर में फ़ाइल की प्रतिलिपि बनाने के लिए MSBuild कार्य का उपयोग करें। यह लक्ष्य से पहले बिल्ड लक्ष्य से पहले निष्पादित करने के लिए परिभाषित किया गया है। Copy BeforeBuild <Target Name="CopyEditorConfig" BeforeTargets="BeforeBuild"> <Message Text="Copying the .editorconfig file from '@(EditorConfigFilesToCopy)' to '$(SolutionFolder)'"></Message> <Copy SourceFiles="@(EditorConfigFilesToCopy)" DestinationFolder="$(SolutionFolder)" SkipUnchangedFiles="true" UseHardlinksIfPossible="false" /> </Target> .csproj फ़ाइल डिफ़ॉल्ट रूप से, एक अवधि के साथ शुरू होने वाली NuGet फ़ाइलों को पैक करते समय अनदेखा कर दिया जाता है। इससे बचने के लिए आपको फ़ाइल में निम्न कोड जोड़ना होगा: .csproj <PropertyGroup> <NoDefaultExcludes>true</NoDefaultExcludes> </PropertyGroup> उसके बाद आपको और फाइल को शामिल करना होगा: .props .editorconfig <ItemGroup> <None Include="MyProject.EditorConfig.props" Pack="true" PackagePath="\build" /> <None Include=".editorconfig" Pack="true" PackagePath="\content\Rules" /> </ItemGroup> NuGet पैकेज का निर्माण और परीक्षण करें जब सारा काम हो जाए तो आप NuGet पैकेज को स्थानीय स्टोरेज में प्रकाशित कर सकते हैं और सत्यापित कर सकते हैं कि यह काम करता है। NuGet पैकेज पैक करने के लिए प्रोजेक्ट फ़ोल्डर में निम्न आदेश निष्पादित करें: MyProject.EditorConfig dotnet pack MyProject.EditorConfig.csproj -c Release -o out --no-restore इसे स्थानीय भंडारण (फ़ोल्डर) में प्रकाशित करें। को पहले से इंस्टॉल करना होगा: NuGet CLI nuget add out/MyProject.EditorConfig.1.0.0.nupkg -Source /Users/igorlopushko/test_nuget_expand/ -Expand पैरामीटर के साथ एक लक्ष्य फ़ोल्डर निर्दिष्ट करें। -Source स्थानीय NuGet पैकेज पथ पंजीकृत करें: dotnet nuget add source /Users/igorlopushko/test_nuget_expand/ लक्ष्य प्रोजेक्ट में स्थानीय NuGet पैकेज जोड़ने के लिए इस कमांड को लक्ष्य प्रोजेक्ट के फ़ोल्डर में निष्पादित करें: dotnet add package MyProject.EditorConfig -s /Users/igorlopushko/test_nuget_expand/ जब आप अपना लक्ष्य प्रोजेक्ट बनाते हैं तो आपको इस प्रोजेक्ट की रूट डायरेक्टरी में फाइल मिल जाएगी। हर बार जब आप कोई प्रोजेक्ट बनाते हैं तो इसे अधिलेखित कर दिया जाएगा। भले ही इसे गलती से किसी भी तरह से संशोधित किया गया हो, फ़ाइल को बिल्ड पर अधिलेखित कर दिया जाएगा। .editorconfig .editorconfig निष्कर्ष समाधान काफी सरल है, लेकिन इसने हमारी टीम के जीवन को आसान बना दिया है। हमने इस NuGet पैकेज को अपनी सभी परियोजनाओं में जोड़ा है और सभी रिपॉजिटरी में कोड शैलियों में डीसिंक्रनाइज़ेशन से बचते हैं।