चुना हुआ उत्तर बताता है कि समाधान फ़ोल्डरों के बजाय वास्तविक परियोजनाओं का उपयोग करना संभव होगा, लेकिन वास्तव में यह नहीं बताता कि कैसे। मुझे लगता है कि मैं यहाँ जो वर्णन कर रहा हूँ वह संभवतः उस प्राप्ति का सबसे कम अजीब तरीका है ...: -पी
नियमित प्रोजेक्ट फ़ाइलों के साथ समस्या यह है कि वे अंततः द्वारा संकलित किए जाएंगे MSBUILD
। और अगर आप एक परियोजना है जो केवल गैर compilable फ़ाइलें हैं करना चाहते हैं, कि होगा एक मुद्दा हो।
लेकिन कुछ समय पहले विजुअल स्टूडियो ने एक नया प्रोजेक्ट प्रकार: साझा प्रोजेक्ट (.shproj एक्सटेंशन) पेश किया। यह प्रोजेक्ट प्रकार डिफ़ॉल्ट रूप से संकलित नहीं किया जाता है, लेकिन केवल जब (और केवल यदि) तो इसे किसी अन्य प्रोजेक्ट द्वारा संदर्भित किया जाता है।
तो यहाँ चाल का एक हिस्सा समाधान फ़ोल्डरों के बजाय साझा परियोजनाओं का उपयोग करना है । यह स्पष्ट रूप से एक साझा परियोजना को जोड़ना संभव है जिसे किसी अन्य परियोजना द्वारा संदर्भित नहीं किया गया है, जिसका अर्थ है कि हम ऊपर प्रस्तुत मुद्दे से बच सकते हैं।
फिर, <None Include="**/*" />
.shproj फ़ाइल में क्लॉज़ का उपयोग करके , हम इसे स्वचालित रूप से किसी भी नई फ़ाइलों और / या सबफ़ोल्डर्स को प्रतिबिंबित कर सकते हैं ।
तो मूल रूप से यह करें:
- अपने समाधान में एक नया फ़ोल्डर बनाएँ।
- इस नए फ़ोल्डर की जड़ में एक नई .shproj फ़ाइल जोड़ें।
- अपने समाधान में नए .shproj का संदर्भ दें।
उदाहरण के लिए, मेरे मामले में, मैंने एक DockerDev.shproj बनाया है, इसलिए मैं कुछ डॉकटर-संबंधित स्क्रिप्ट्स को समूहित कर सकता हूं जिन्हें हम केवल अपनी विकास मशीनों में चलाते हैं:
<?xml version="1.0" encoding="utf-8"?>
<!-- DockerDev/DockerDev.shproj -->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<None Include="**/*" />
</ItemGroup>
</Project>
यह .shproj फ़ाइल मेरे समाधान में इस नए फ़ोल्डर के किसी भी सबफ़ोल्डर में किसी भी फ़ाइल का ट्रैक रखेगा ।DockerDev
जहाँ तक मैं देख सकता था, यह समाधान बहुत काम करता है जैसे कि ओपी ने जो अनुरोध किया था: यह एक फ़ोल्डर के लिए गैर-संकलित संदर्भ के रूप में काम करेगा, और यह स्वचालित रूप से इसके लिए किए गए किसी भी परिवर्तन को प्रतिबिंबित करेगा।