2010-08-26 15 views
6

का उपयोग कर एमएसबिल्ड में एक फ़ाइल को स्थानांतरित करना मैं फ़ाइल के सापेक्ष एक निर्देशिका में किसी निश्चित प्रकार की सभी फ़ाइलों को स्थानांतरित करने की कोशिश कर रहा हूं और मुझे आश्चर्य है कि यह MSBuild का उपयोग कर संभव है या नहीं।सापेक्ष पथ

असल में, मैं अपनी साइट पर सभी जावास्क्रिप्ट और सीएसएस फ़ाइलों को कम करने के लिए माइक्रोसॉफ्ट AJAX मिनीफायर का उपयोग कर रहा हूं। यह .min.js और .min.css फ़ाइलों को जावास्क्रिप्ट और सीएसएस फ़ाइलों के समान निर्देशिका में आउटपुट करता है। चूंकि मेरी साइट में कई खाल हैं, इसलिए कई निर्देशिकाओं में स्थित जेएस और सीएसएस फ़ाइलें हैं। मैं एक ऐसा कार्य जोड़ने में सक्षम होना चाहता हूं जो AJAX मिनीफायर के बाद चलता है जो सभी .min.js और .min.css फ़ाइलों को फ़ाइल स्थान के सापेक्ष/मिनट/रिश्ते में ले जाता है। तो /Skin1/somescript.min.js /Skin1/min/somescript.min.js और /Skin2/somescript.min.js पर स्थानांतरित हो जाएगा /Skin2/somescript.min.js पर स्थानांतरित होगा।

एक प्रतिलिपि/चाल को पूरा करने के लिए मुझे पता है कि एकमात्र तरीका पूर्ण निर्देशिका के ज्ञान की आवश्यकता है (या मुझे प्रोजेक्ट फ़ाइल से संबंधित निर्देशिका कहना चाहिए) लेकिन मुझे निर्देशिका संबंधित के आधार पर स्थानांतरित करने का कोई तरीका नहीं दिख रहा है फ़ाइल में मैं जा रहा हूँ।

क्या यह किया जा सकता है?

उत्तर

12
<CreateItem Include="wwwroot\**\*.min.js;wwwroot\**\*.min.css"> 
    <Output TaskParameter="Include" ItemName="FilesToMove" /> 
</CreateItem> 

<Move SourceFiles="@(FilesToMove)" DestinationFiles="@(FilesToMove->'wwwroot\%(RecursiveDir)\min\%(Filename)%(Extension)')"/> 

मान लें कि आप MSBuild community tasks से मूव कार्य का उपयोग कर रहे हैं। यदि नहीं, तो आप इसके बजाय मूल की प्रतिलिपि बना सकते हैं और फिर हटा सकते हैं।

+0

$ (रिकर्सिव डीआईआर) हुह? बहुत अच्छे धन्यवाद! – hackerhasid