2010-06-28 11 views
20

संभव डुप्लिकेट:
Copy to Output Directory copies folder structure but only want to copy filesविजुअल स्टूडियो - एक उपनिर्देशिका के बजाय आउटपुट निर्देशिका में "सामग्री" फ़ाइलों को भेज रहा है?

मैं VS2010 उपयोग कर रहा हूँ। मुझे एक सी # परियोजना मिली है जो कुछ देशी डीएलएल का उपयोग करती है। मेरे स्रोत पेड़ में, मेरे पास मुख्य समाधान निर्देशिका के नीचे "डीएलएल" निर्देशिका में संग्रहीत इन मूल फ़ाइलें हैं। मेरे सी # प्रोजेक्ट में, मेरे पास "डीएलएल" फ़ोल्डर है जो इसके अंदर प्रत्येक डीएलएल के साथ सूचीबद्ध है। प्रत्येक डीएलएल "सामग्री" और "कॉपी टू आउटपुट" को "हमेशा" पर सेट करने के लिए सेट किया गया है।

दुर्भाग्य से, क्योंकि ये फ़ाइलें उपनिर्देशिका में हैं, इसलिए वीएस को लगता है कि उन्हें इस तरह से तैनात किया जाना चाहिए। \ Bin \ Debug पर तैनात किए जाने के बजाय, उन्हें \ bin \ Debug \ DLL पर तैनात किया जा रहा है। क्या वीएस को सीधे \ bin \ Debug पर तैनात करने के लिए मनाने के लिए कोई सीधा तरीका है, या क्या मुझे उन्हें कॉपी करने के लिए किसी प्रकार की कस्टम बिल्ड एक्शन करना होगा?

उत्तर

21

ऐसा इसलिए है क्योंकि आप उन्हें समाधान में फ़ोल्डर में मिला है। व्यावहारिक समाधान उन्हें समाधान रूट में जोड़ना है, फ़ाइल का वास्तविक स्थान कोई फर्क नहीं पड़ता। यह शायद आपके समाधान एक्सप्लोरर विंडो में अव्यवस्था का एक छोटा सा हिस्सा बनाता है। यदि यह अस्वीकार्य है तो पूर्व-निर्माण ईवेंट जो xcopy/d का उपयोग करता है वह वर्कअराउंड है।

xcopy /d "$(ProjectDir)DLLs\*.dll" "$(TargetDir)"

+0

हाँ, यह मैं क्या सोचा है। धन्यवाद। – markerikson

0

हम ऐसी चीज के लिए Build Events का उपयोग कर रहे हैं। बस xcopy कमांड लिखें और सभी डीएलएस को वांछित फ़ोल्डर में कॉपी करें

0

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

संबंधित मुद्दे