CSProj फ़ाइल क्या है?
CSPROJ एक्सटेंशन वाली फाइलें एक C# प्रोजेक्ट फाइल का प्रतिनिधित्व करती हैं जिसमें सिस्टम असेंबली के संदर्भ के साथ प्रोजेक्ट में शामिल फाइलों की सूची होती है। जब Microsoft VIiual Studio में एक नया प्रोजेक्ट शुरू किया जाता है, तो आपको मुख्य समाधान (.sln) फ़ाइल के साथ एक .csproj फ़ाइल मिलती है। यदि किसी प्रोजेक्ट में एक से अधिक असेंबली हैं, तो प्रोजेक्ट फ़ाइलों की समान संख्या भी होगी, जहाँ .sln फ़ाइल उन सभी को प्रोजेक्ट के हिस्से के रूप में एक साथ जोड़ती है। इस फ़ाइल की सामग्री उन सभी आवश्यकताओं को परिभाषित करती है जो परियोजना को बनाने के लिए आवश्यक हैं जैसे सामग्री शामिल करने के लिए, प्लेटफ़ॉर्म आवश्यकताएँ, संस्करण जानकारी, वेब सर्वर या डेटाबेस सर्वर सेटिंग्स, और कार्य जो किए जाने चाहिए। एक प्रोजेक्ट फ़ाइल की सामग्री को XML फ़ाइल स्वरूप में व्यवस्थित किया जाता है और इसे संपादन के साथ-साथ देखने के लिए किसी भी पाठ संपादक में खोला जा सकता है। यह उचित व्यवस्था के लिए परियोजना फाइलों को एक तार्किक दृष्टिकोण भी देता है।
सीएसपीआरओजे फ़ाइल प्रारूप
MSBuild XML स्कीमा का सम्मान करते हुए डेवलपर स्वयं प्रोजेक्ट फ़ाइलें बना सकते हैं। प्रोजेक्ट फाइलों की खुली और पारदर्शी संरचना एप्लिकेशन डेवलपर्स को प्रोजेक्ट बनाने और तैनात करने के तरीके पर परिष्कृत और बढ़िया नियंत्रण लगाने देती है। ऐसी परियोजना फ़ाइल की सामग्री आपस में बहुत स्पष्ट संबंध रखती है। निम्नलिखित आंकड़ा ऐसी परियोजना फ़ाइल के लिए प्रमुख तत्वों और इनके बीच के संबंध को दर्शाता है।
निम्न खंड प्रोजेक्ट फ़ाइल के लिए फ़ाइल स्वरूप तत्वों को विस्तृत करते हैं।
परियोजना तत्व
प्रोजेक्ट तत्व प्रत्येक प्रोजेक्ट फ़ाइल का मूल तत्व है। यह प्रोजेक्ट फ़ाइल के लिए XML स्कीमा की पहचान करता है और निर्माण प्रक्रिया के लिए प्रवेश बिंदु निर्दिष्ट करने के लिए विशेषताएँ शामिल कर सकता है।
<Project ToolsVersion#"4.0" DefaultTargets#"FullPublish"
xmlns#"http://schemas.microsoft.com/developer/msbuild/2003">
</Project>
गुण और शर्तें
गुण एक परियोजना बनाने के लिए आवश्यक आवश्यक जानकारी का प्रतिनिधित्व करते हैं। इस तरह के गुणों को PropertyGroup तत्व के भीतर परिभाषित किया गया है। इन गुणों में कुंजी-मूल्य जोड़े होते हैं जहां संपत्ति तत्व का नाम संपत्ति कुंजी को परिभाषित करता है और तत्व की सामग्री संपत्ति मूल्य को परिभाषित करती है। उदाहरण के लिए, आप एक स्थिर सर्वर नाम और कनेक्शन स्ट्रिंग को स्टोर करने के लिए ServerName और ConnectionString नामक गुणों को परिभाषित कर सकते हैं।
<PropertyGroup>
<ServerName>FABRIKAM\TEST1</ServerName>
<ConnectionString>
Data Source#FABRIKAM\TESTDB;InitialCatalog#ContactManager,...
</ConnectionString>
</PropertyGroup>
तत्वों के मूल्यांकन के लिए मानदंड निर्दिष्ट करने के लिए शर्तों को तत्वों के माध्यम से निर्दिष्ट किया जा सकता है। जैसा कि नीचे दिखाया गया है, संपत्ति को परिभाषित करते समय यह शर्त शब्द द्वारा निर्दिष्ट किया गया है:
<PropertyGroup>
<OutputRoot Condition#" '$(OutputRoot)'##'' ">..\Publish\Out\</OutputRoot>
...
</PropertyGroup>
जब एमएसबिल्ड इस संपत्ति परिभाषा को संसाधित करता है, तो यह पहले यह देखने के लिए जांच करता है कि $(OutputRoot) संपत्ति मूल्य उपलब्ध है या नहीं। अगर प्रॉपर्टी का मान खाली है—दूसरे शब्दों में, उपयोगकर्ता ने इस प्रॉपर्टी के लिए कोई मान नहीं दिया है—शर्त का मूल्यांकन true होता है और प्रॉपर्टी का मान ..\Publish\Out. पर सेट होता है.
आइटम और आइटम समूह
एक प्रोजेक्ट फ़ाइल निर्माण प्रक्रिया के इनपुट को परिभाषित करती है जो वास्तव में विभिन्न फ़ाइल प्रकार हैं। MSBuild नामकरण में, ये इनपुट आइटम तत्वों द्वारा दर्शाए जाते हैं और एक आइटम समूह तत्व के भीतर परिभाषित होते हैं। संपत्ति तत्वों की तरह, आप किसी आइटम तत्व को अपनी पसंद के अनुसार नाम दे सकते हैं. हालाँकि, आपको उस फ़ाइल या वाइल्डकार्ड की पहचान करने के लिए एक शामिल करें विशेषता निर्दिष्ट करनी होगी जिसका आइटम प्रतिनिधित्व करता है।
<ItemGroup>
<ProjectsToBuild Include#"$(SourceRoot)ContactManager-WCF.sln"/>
</ItemGroup>
लक्ष्य और कार्य
एक कार्य तत्व एक व्यक्तिगत निर्माण निर्देश (या कार्य) का प्रतिनिधित्व करता है। MSBuild में कई पूर्वनिर्धारित कार्य शामिल हैं। उदाहरण के लिए:
- कॉपी करें कार्य फ़ाइलों को नए स्थान पर कॉपी करता है।
- Csc टास्क विजुअल C# कंपाइलर को इनवॉइस करता है।
- Vbc टास्क विजुअल बेसिक कंपाइलर को आमंत्रित करता है।
- Exec टास्क एक निर्दिष्ट प्रोग्राम चलाता है।
- संदेश ** कार्य लकड़हारे को संदेश लिखता है।
टास्क हमेशा Target एलिमेंट में होने चाहिए. A Target तत्व एक या अधिक कार्यों का एक सेट है जो क्रमिक रूप से निष्पादित होते हैं, और एक प्रोजेक्ट फ़ाइल में कई लक्ष्य हो सकते हैं।
<Project xmlns#"http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name#"LogMessage">
<Message Text#"Hello world!" />
</Target>
</Project>