2009-06-24 16 views
6

के माध्यम से खाली फ़ोल्डरों को जोड़ना/प्रतिलिपि बनाना मैं एक पूर्व-संकलित साइट कॉपी/ज़िप बनाने की कोशिश कर रहा हूं जिसमें खाली फ़ोल्डर्स (प्री-संकलन के बाद) शामिल है। ऐसा लगता है कि CreateItem कार्य के बाद आइटम की सूची में रिक्त फ़ोल्डर शामिल नहीं हैं। मैं खाली फ़ोल्डर की देखभाल कैसे कर सकता हूं?एमएसबिल्ड: ज़िप/प्रतिलिपि कार्य

धन्यवाद

उत्तर

4

मैं नहीं लग रहा है कि इस सबसे सुरुचिपूर्ण समाधान है, लेकिन हम पहले है क्या किया है, समाधान में एक फ़ोल्डर बनाने, और एक पाठ फ़ाइल placeholder.txt या कुछ इसी तरह कहा जाता है, और निर्माण में पाठ फ़ाइल के गुणों को शामिल करने के लिए सेटिंग। परिणाम एक फ़ोल्डर है जहां आप चाहते हैं कि इसमें एक फ़ाइल है जिसे आप नहीं चाहते हैं। इससे पहले कि हम इसे ज़िपित करने से पहले प्लेसहोल्डर.txt फ़ाइल को हटा दें, सब कुछ बिल्ड स्क्रिप्ट के भीतर।

सुरुचिपूर्ण नहीं है लेकिन यह हमारे परिदृश्य के लिए काम करता है।

4

एमएसबिल्ड आइटम बनाते समय खाली फ़ोल्डर्स नहीं उठाएगा। यदि आप किसी आइटम में रिक्त फ़ोल्डरों को स्थानांतरित करने में सक्षम होना चाहते हैं तो आपको एक कार्य (MSBuild Extension Pack से FindUnder कार्य की तरह) का उपयोग करना होगा।

सैयद इब्राहिम हाशिमी

मेरे पुस्तक: Inside the Microsoft Build Engine : Using MSBuild and Team Foundation Build

1

सिर्फ खाली फ़ोल्डर आप Robocopy कॉल करने के लिए एक कार्यकारी कार्य का उपयोग कर सकते कॉपी करने के लिए। आप तर्क/एमआईआर निर्दिष्ट कर सकते हैं जो खाली पेड़ समेत पूरे पेड़ को प्रतिलिपि बनाने का प्रयास कर रहा है।

उदाहरण:

<Exec Command="robocopy &quot;$(SourceLocation)\&quot; &quot;$(TargetLocation)\&quot; /MIR" IgnoreExitCode="true" /> 

इसी तरह, आप एक कार्यकारी काम के लिए एक संपीड़न उपयोगिता खाली फ़ोल्डर के साथ जिप प्राप्त करने के लिए एक कमांड लाइन इंटरफेस है कि कॉल करने के लिए इस्तेमाल कर सकते हैं।

0

यह थोड़ा मुश्किल हो सकता है, लेकिन मैं यह काम करता है अगर आपके सभी फ़ाइलों और फ़ोल्डरों एक आम जड़ में हैं लगता है और आप वाइल्डकार्ड का उपयोग किए बिना कि रूट फ़ोल्डर ज़िप (बस का उपयोग कर '।'):

<PropertyGroup> 
    <SourcePath>.\path\to\rootFolder</SourcePath> 
    <FinalZipFileName>.\path\to\destination\myzip.zip</FinalZipFileName> 
</PropertyGroup> 

<Target Name="MyApplicationZip" > 
    <Zip ZipFileName="$(FinalZipFileName)" WorkingDirectory="$(SourcePath)" Files="$(SourcePath)\." ZipLevel="9" /> 
</Target> 
संबंधित मुद्दे