बड़ा सवाल है। मैंने अभी वेब परिनियोजन उपकरण (MSDeploy) में इसके बारे में एक बहुत विस्तृत ब्लॉग प्रविष्टि पोस्ट की है : अतिरिक्त फ़ाइलों सहित पैकेज या विशिष्ट फ़ाइलों को छोड़कर ।
यहाँ सार है। फ़ाइलों को शामिल करने के बाद, मैं दिखाता हूं कि फ़ाइलों को कैसे बाहर रखा जाए।
जिनमें एक्सट्रा फाइल्स शामिल हैं
पैकेज में अतिरिक्त फ़ाइलों को शामिल करना थोड़ा कठिन है लेकिन फिर भी कोई बड़ा नहीं है अगर आप MSBuild के साथ सहज हैं, और यदि आप नहीं हैं तो इसे पढ़ें। ऐसा करने के लिए, हमें उस प्रक्रिया के भाग में हुक करने की आवश्यकता है जो पैकेजिंग के लिए फाइलें एकत्र करता है। हमें जिस लक्ष्य का विस्तार करने की आवश्यकता है उसे CopyAllFilesToSingleFolder कहा जाता है। इस लक्ष्य के पास एक निर्भरता गुण है, PipelinePreDeployCopyAllFilesToOneFolderDependsOn, जिसे हम टैप कर सकते हैं और अपने लक्ष्य को इंजेक्ट कर सकते हैं। इसलिए हम CustomCollectFiles नाम का एक लक्ष्य बनाएंगे और इस प्रक्रिया में इंजेक्ट करेंगे। हम इसे निम्नलिखित के साथ प्राप्त करते हैं (आयात विवरण के बाद याद रखें)।
<PropertyGroup>
<CopyAllFilesToSingleFolderForPackageDependsOn>
CustomCollectFiles;
$(CopyAllFilesToSingleFolderForPackageDependsOn);
</CopyAllFilesToSingleFolderForPackageDependsOn>
<CopyAllFilesToSingleFolderForMsdeployDependsOn>
CustomCollectFiles;
$(CopyAllFilesToSingleFolderForMsdeployDependsOn);
</CopyAllFilesToSingleFolderForMsdeployDependsOn>
</PropertyGroup>
यह हमारे लक्ष्य को प्रक्रिया में जोड़ देगा, अब हमें लक्ष्य को स्वयं परिभाषित करने की आवश्यकता है। मान लेते हैं कि आपके पास एक्स्ट्रा फाइल्स नाम का एक फोल्डर है जो आपके वेब प्रोजेक्ट के ऊपर 1 लेवल पर बैठता है। आप उन सभी फ़ाइलों को शामिल करना चाहते हैं। यहाँ CustomCollectFiles लक्ष्य है और हम उसके बाद चर्चा करते हैं।
<Target Name="CustomCollectFiles">
<ItemGroup>
<_CustomFiles Include="..\Extra Files\**\*" />
<FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
<DestinationRelativePath>Extra Files\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
यहाँ मैंने जो भी किया वह था आइटम _CustomFiles और इसे शामिल करें विशेषता में इसे उस फ़ोल्डर में सभी फ़ाइलों को लेने और इसके नीचे किसी भी फ़ोल्डर को लेने के लिए कहा। अगर किसी भी तरह से आपको उस सूची से कुछ को बाहर करने की आवश्यकता है , तो एक Exclude
विशेषता जोड़ें _CustomFiles
।
तब मैं FilesForPackagingFromProject आइटम को पॉप्युलेट करने के लिए इस आइटम का उपयोग करता हूं। यह वह आइटम है जिसे MSDeploy वास्तव में अतिरिक्त फ़ाइलों को जोड़ने के लिए उपयोग करता है। यह भी ध्यान दें कि मैंने मेटाडेटा डेस्टिनेशनरेलिवेटिव वैल्यू घोषित किया है। यह सापेक्ष पथ निर्धारित करेगा कि इसे पैकेज में रखा जाएगा। मैंने यहाँ एक्सट्रा फाइल्स% (RecursiveDir)% (फाइलनाम)% (एक्सटेंशन) स्टेटमेंट का उपयोग किया। जो कुछ भी कह रहा है उसे पैकेज में उसी रिश्तेदार स्थान पर रखना है क्योंकि यह अतिरिक्त फ़ाइलों के फ़ोल्डर में है।
फाइलों को छोड़कर
यदि आप वीएस 2010 के साथ बनाई गई एक वेब एप्लिकेशन की प्रोजेक्ट फाइल खोलते हैं, तो उसके नीचे आपको एक लाइन मिलेगी।
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
BTW आप VS के अंदर प्रोजेक्ट फ़ाइल खोल सकते हैं। प्रोजेक्ट पिक अनलोड प्रोजेक्ट पर राइट क्लिक करें। फिर अनलोड्ड प्रोजेक्ट पर राइट क्लिक करें और एडिट प्रोजेक्ट चुनें।
इस वक्तव्य में वे सभी लक्ष्य और कार्य शामिल होंगे जिनकी हमें आवश्यकता है। हमारे अधिकांश अनुकूलन उस आयात के बाद होने चाहिए, यदि आपको यकीन नहीं है कि बाद में डाल दिया जाए! इसलिए यदि आपके पास फ़ाइल को बाहर करने के लिए कोई आइटम नाम है, तो ExcludeFromPackageFiles, ऐसा करने के लिए उपयोग किया जा सकता है। उदाहरण के लिए मान लें कि आपके पास Sample.Debug.xml नाम की फ़ाइल है जो आपके वेब एप्लिकेशन में शामिल है लेकिन आप चाहते हैं कि फ़ाइल को बनाए गए पैकेज से बाहर रखा जाए। आप उस आयात विवरण के बाद स्निपेट को नीचे रख सकते हैं।
<ItemGroup>
<ExcludeFromPackageFiles Include="Sample.Debug.xml">
<FromTarget>Project</FromTarget>
</ExcludeFromPackageFiles>
</ItemGroup>
इस आइटम को पॉप्युलेट करके, फ़ाइलों को स्वचालित रूप से बाहर रखा जाएगा। FromTarget
यहां मेटाडेटा के उपयोग पर ध्यान दें । मैं इसमें शामिल नहीं होऊंगा, लेकिन आपको हमेशा यह बताना चाहिए।