2011-05-25 4 views
25

कोई इन के बीच अन्तर को स्पष्ट कर सकते हैं:PostBuildEvent और AfterBuild लक्ष्य के बीच विजुअल स्टूडियो प्रोजेक्ट फ़ाइल अंतर?

<Target Name="AfterBuild"> 
    <!-- task here --> 
</Target> 

और:

<PropertyGroup> 
<PostBuildEvent>copy "$(ProjectDir)\..\lib\$(PlatformName)\x.dll" .</PostBuildEvent> 
</PropertyGroup> 

धन्यवाद।

उत्तर

15

PostBuildEvent प्रॉपर्टी एक आदेश को पकड़ने में सक्षम है जो एक निष्पादन कार्य के लिए कमांड विशेषता के रूप में पास की जाती है। अनिवार्य रूप से आप इसे केवल एक सफल निर्माण पर चलाता है एक लक्ष्य है कि इस तरह दिखता है,

<Target Name="PostBuildEvent"> 
    <Exec Command="$(PostBuildEvent)" /> 
</Target> 

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

आफ्टरबिल्ड लक्ष्य मनमाने ढंग से एमएसबिल्ड कार्यों को शामिल करने में सक्षम है, जिसमें एक या अधिक निष्पादन कार्य या MSBuild के लिए उपलब्ध कोई अन्य कार्य शामिल है, जो अधिक जटिलता की अनुमति देता है।

जब उन्हें निष्पादित किया जाता है, तो PostBuildEvent लक्ष्य "CoreBuild" से पहले चलता है जबकि "AfterBuild" लक्ष्य "CoreBuild" के बाद चलाएगा। यदि प्लेसमेंट महत्वपूर्ण है, तो आप अपना खुद का लक्ष्य बना सकते हैं और $ (DependsOn ..) घोषणाओं का उपयोग करके, या अपने नए लक्ष्य पर आफ्टरटेक्शंस और आफ्टरटेक्शंस निर्दिष्ट करके, इसे चलाने के लिए इसे चलाने के लिए इसे बनाने के लिए इसे घुमाने में ले जा सकते हैं।

+0

CoreBuildEvent CoreBuild – JaredPar

+1

के बाद चलता है ठीक है, तकनीकी रूप से PostBuildEvent CoreBuild आश्रित लक्ष्यों के अंत में चलता है, जो सभी CoreBuild लक्ष्य से पहले निष्पादित होते हैं, लेकिन फिर CoreBuild केवल एक खाली लक्ष्य है जो केवल अपनी निर्भरता सूची सूची के लिए जंक्शन बिंदु के रूप में मौजूद प्रतीत होता है। यह CoreBuild के बाद "सब कुछ उपयोगी" CoreBuild चलाने के कारणों के अंत में "रन" नहीं चलाता है। माइक्रोसॉफ्ट देखें। कॉमन। लक्ष्य ~ लाइन 560 (2010 एसपी 1)। –

+0

ओह हाँ मैं भूल जाता हूं कि यह निर्भर करता है सूची में एक हां है, इसलिए यह पहले चलाता है। मैं लगातार पढ़ता हूं कि CoreBuild निष्पादित करता है ... CoreBuild DependsOn के बजाय ... – JaredPar

16

पोस्टब्यूल्डवेन्ट और आफ्टरबिल्ड दोनों एमएसबिल्ड लक्ष्य हैं। दोनों के बीच अंतर के आसपास जब वे

  • लागू कर रहे हैं AfterBuild की स्थिति है: यह लक्ष्य बिल्ड में अंतिम क्रिया के रूप में चलाता है और इसलिए चाहे या नहीं, एक निर्माण सफल होता है की है। यह PostBuildEvent के बाद चलता है (यदि यह बिल्कुल चलता है)
  • PostBuildEvent: निर्माण पूर्ण होने के बाद यह सशर्त रूप से चलता है। जब यह चलता है तो बहुत विन्यास योग्य होता है लेकिन आम तौर पर यह केवल तभी चलाया जाएगा जब कोई निर्माण सफलतापूर्वक पूरा हो और नया आउटपुट उत्पन्न करता हो।
+0

क्या एक वाक्यविन्यास दूसरे पर पसंद किया जाता है? – Sako73

+1

आपके परिदृश्य पर निर्भर करता है लेकिन आमतौर पर लोग PostBuildEvent – JaredPar

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