Visual Studio प्रोजेक्ट्स में फ़ोल्डरों के लिए "लिंक के रूप में जोड़ें"


127

विज़ुअल स्टूडियो में, हम समाधान में किसी अन्य प्रोजेक्ट की फ़ाइल में लिंक जोड़ने के लिए "लिंक के रूप में जोड़ें" कर सकते हैं।

क्या पूरे फ़ोल्डर के लिए ऐसा करने का कोई तरीका है, ताकि प्रोजेक्ट A में एक संपूर्ण फ़ोल्डर प्रोजेक्ट B में दिखाई देगा, उस फ़ोल्डर में नए आइटम को मैन्युअल रूप से लिंक करने की आवश्यकता के बिना?

जवाबों:


141

जैसा कि इस ब्लॉगपोस्ट ने कहा है, यह संभव है।

<ItemGroup>
    <Compile Include="any_abs_or_rel_path\**\*.*">
        <Link>%(RecursiveDir)%(FileName)%(Extension)</Link>
    </Compile>
</ItemGroup>

लेकिन ध्यान रहे, फाइल कॉपी नहीं होगी।


18
+1। तुम भी उपयोग कर सकते हैं <Content ...>, और <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>दृश्य स्टूडियो बनाने के लिए संसाधनों पर प्रतिलिपि बनाने के लिए जोड़ें ।
मार्कस जार्डेरॉट

8
उपयोग करने का प्रयास करें: <None>...</None>इसके बजाय <Compile>...</Compile>। लेकिन मुझे लगता है, यह उन फाइलों को वैसे भी कॉपी कर लेगी।
मो।

4
@mo। आपका जवाब प्रोजेक्ट रूट में सभी फाइलों के लिंक जोड़ता है, कभी-कभी यह असुविधाजनक होता है। % (RecursiveDir) को कुछ लिंक फ़ोल्डर के नाम में बदलना चाहिए: उदाहरण के लिए wp7 परियोजना से स्रोत फ़ोल्डर को लिंक करने के लिए 'MyMainProject' इस प्रोजेक्ट में किसी अन्य प्रोजेक्ट में: <ItemGroup> <Compile शामिल करें = ".. \ _" MyMainProject \ MyMainProject \ engine *। * "> <Link> इंजन \% (FileName) </ Link> </ संकलन> </ ItemGroup>
Tertium

23
मुझे <Link>%(RecursiveDir)%(FileName)%(Extension)</Link>फ़ाइल नामों से एक्सटेंशन को छोड़ने से रोकने के लिए इसका उपयोग करना था ।
जो डेली

2
आइकन पीएनजी संसाधनों के लिए: <एंबेडेडResource शामिल करें = ".. \
_

126

VS2012 में और बाद में, आप के साथ एक अन्य परियोजना के लिए एक फ़ोल्डर खींच सकते हैं ऑल्ट कुंजी दबाया। यह प्रत्येक फ़ाइल को लिंक के रूप में मैन्युअल रूप से लेकिन तेज़ी से जोड़ने के समान है।

upd : उपयोग करने पर विचार साझा परियोजनाओं यदि आप VS2013 अपडेट 2 का उपयोग कर रहे हैं (साथ साझा परियोजना संदर्भ प्रबंधक या VS2015)।


1
VS2010 में, ऐसा करने से फ़ाइलों और निर्देशिकाओं को कॉपी करने के बजाय लिंक के रूप में जोड़ा जाएगा, जिससे अवांछित डुप्लिकेट बनेंगे।
टॉम

3
नोट: फ़ोल्डर को विंडोज़ एक्सप्लोरर (दृश्य स्टूडियो का दूसरा उदाहरण नहीं) से खींचा जाना चाहिए। इसके अलावा, यह एक बाएं-क्लिक ड्रैग होना चाहिए, न कि राइट-क्लिक ड्रैग। VS2012 में बढ़िया काम करता है।
davidpricedev

11
मुझे लगता है कि यह केवल स्रोत फ़ोल्डर में प्रत्येक फ़ाइलों के लिए लिंक बनाता है, न कि केवल फ़ोल्डर का लिंक। इसका मतलब है कि यदि आप स्रोत फ़ोल्डर में एक फ़ाइल जोड़ते हैं, तो यह स्वचालित रूप से लिंक नहीं किया जाएगा।
जॉनी

1
@MauryMarkowitz, आपको वीएस प्रोजेक्ट से एक फ़ोल्डर खींचना चाहिए, न कि विंडोज़ एक्सप्लोरर या कुछ और।
mt_serg

1
@MauryMarkowitz, एकल समाधान, दो परियोजनाएं। Alt1 को प्रोजेक्ट 1 से प्रोजेक्ट 2 तक खींचें। Project1 / Folder1 से प्रत्येक फ़ाइल को लिंक के रूप में Project2 / Folder1 में जोड़ा जाएगा।
mt_serg

37

मो से जवाब के अलावा एक और मार्कस की टिप्पणी, यदि आप सामग्री आइटम लिंक कर रहे हैं तो आपको फाइल एक्सटेंशन को शामिल करना होगा:

<ItemGroup>
  <Compile Include="any_abs_or_rel_path\**\*.*">
    <Link>%(RecursiveDir)%(FileName)%(Extension)</Link>
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  </Compile>
</ItemGroup>

इस <Compile ...में क्या । मेरे मामले में, मुझे .tsअपनी नई परियोजना के लिए फ़ाइलों को संदर्भित करने की आवश्यकता है । यह कैसे किया है। धन्यवाद!
रहमतुल्ला एम

23

आईडीई में एक लिंक किए गए फ़ोल्डर को प्रदर्शित करने के लिए मूल क्वेरी के भाग के बारे में, यह प्राप्त करना संभव है, इसलिए समाधान एक्सप्लोरर में एक फ़ोल्डर है जो सभी लिंक की गई फ़ाइलों के साथ अंदर है, सभी फाइलों की जड़ में दिखाई देने वाली फाइलों के बजाय समाधान। इसे प्राप्त करने के लिए इसके अतिरिक्त:

  <ItemGroup>
    <Compile Include="..\anypath\**\*.*">
      <Link>MyData\A\%(RecursiveDir)%(FileName)%(Extension)</Link>
    </Compile>
  </ItemGroup>

इसमें MyData नामक समाधान एक्सप्लोरर में एक नए फ़ोल्डर में लिंक की गई निर्देशिका से सभी फाइलें शामिल होंगी। ऊपर दिए गए कोड में 'A' को कुछ भी कहा जा सकता है, लेकिन फ़ोल्डर के दिखाई देने के लिए वहां होना चाहिए।


यह चाल करने के लिए लगता है, लेकिन प्रपत्र फ़ाइलों को एक में नहीं मोड़ता है, और उनकी .resx फ़ाइलों के लिए त्रुटियां देता है (मैं VB का उपयोग कर रहा हूं)। फिर भी धन्यवाद।
इवान फेरर विला

1
@IvanFerrerVilla, हाँ इसमें कुछ समस्याएं हैं जिन पर मैंने गौर किया है, लेकिन अधिकांश भाग केवल दिखावे के लिए अच्छे हैं।
एडम

3
विजुअल स्टूडियो 2015 के साथ, इसने मेरे लिए `ए` के बिना भी काम किया।
मार्टिन

7

यदि आप किसी फ़ोल्डर को संदर्भ के रूप में जोड़ना चाहते हैं और आप उसका उपयोग नहीं करना चाहते हैं:

<Content Include="any_path\**\*.*">
  <Link>folder_in_B_project\%(RecursiveDir)%(FileName)%(Extension)</Link>
</Content>

0

खोल बाहर फोड़ो और एक प्रतीकात्मक लिंक जोड़ें।

runas व्यवस्थापक तब

mklink /d LinkToDirectory DirectoryThatIsLinkedTo

BAM प्रतीकात्मक लिंक!

/ d निर्देशिका लिंक निर्दिष्ट करता है।

विस्टा में बॉक्स से बाहर काम करता है। XP के लिए backported किया जा सकता है।

यहाँ दस्तावेज़ीकरण: http://technet.microsoft.com/en-us/library/cc753194%28WS.10%B.sx

प्रतीकात्मक लिंक से परिचित नहीं होने वालों के लिए, यह अनिवार्य रूप से किसी अन्य फ़ाइल या निर्देशिका का सूचक है। यह अनुप्रयोगों के लिए पारदर्शी है। डिस्क पर एक प्रतिलिपि, इसे संबोधित करने के कई तरीके। आप एक "हार्ड लिंक" भी बना सकते हैं जो किसी अन्य पते का संकेतक नहीं है, लेकिन उसी फ़ाइल के लिए NTFS में एक वास्तविक फ़ाइल आईडी प्रविष्टि है।

नोट: जैसा कि टिप्पणियों में कहा गया है, यह केवल उस कंप्यूटर पर काम करेगा, जहां आपने सिमलिंक बनाया था और जैसे गेट कंट्रोल सिस्टम में काम नहीं करेगा।


2
यह केवल एक ही डेवलपर (जब तक स्क्रिप्टेड नहीं) के लिए उपयोगी होगा। अन्य समाधान साझा स्रोत कोड का हिस्सा बनते हैं, इसलिए ये अधिक सार्वभौमिक रूप से उपयोगी हैं।
जौघन

पूछे गए प्रश्न साझा स्रोत कोड के बारे में नहीं थे। उस ने कहा, msysgit सहानुभूति का समर्थन नहीं करता है, इसलिए bummer।
जॉन वैन्स

1
यह एक फाइलसिस्टम सवाल नहीं है। कृपया ध्यान दें कि यह विचार विभिन्न स्रोत नियंत्रण प्रणालियों और बैकअप
रिसोर्स

जाहिरा तौर पर मुझे अपने प्रश्न को संपादित करने या हटाने की अनुमति नहीं है। आपकी पहली आपत्ति मूर्खतापूर्ण है। यह प्रश्न भी स्पष्ट रूप से एक परियोजना फ़ाइल संपादन प्रश्न नहीं था, इसलिए आपको उन सभी उत्तरों को भी छोड़ देना चाहिए। आपकी दूसरी आपत्ति का उल्लेख किया गया है, और यदि मैं अपना उत्तर उस चेतावनी को जोड़ने के लिए संपादित कर सकता हूं, तो मैं करूंगा।
जॉन वेंस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.