2012-03-07 16 views
24

बनाता है मैं सोच रहा था: कमांड लाइन से समाधान संकलित करते समय msbuild और devenv का उपयोग करने के बीच क्या अंतर है?कमांड लाइन के लिए एमएसबिल्ड बनाम डेवेनव

एक स्पष्ट बात यह थी कि एमएसबिल्ड निर्भर परियोजनाओं का निर्माण करता है जो समाधान के भीतर नहीं है, जबकि डेवेन नहीं करता है।

क्या कोई और है? क्या कुछ विशेष झंडे हैं जो एमएसबिल्ड को पास कर सकते हैं ताकि इसे डेवेन बिल्ड का मिलान कर सकें?

पीएस मैं विजुअल स्टूडियो 2010 एसपी 1

+1

सभी डेवनव बिल्ड करने के लिए msbuild को कॉल करने के बाद! –

उत्तर

9
इस MSDN Blog Entry वे मतभेद कम करने की कोशिश के अनुसार

, लेकिन उन है कि मौजूद (यानी एक एकीकृत सी # संकलक का उपयोग कर के बजाय csc.exe या BuildingInsideVisualStudio संपत्ति सेट करना) मुख्य रूप से बिल्ड के प्रदर्शन को अनुकूलित करने के लिए किया जाता है।

4

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

नंत अपाचे फाउंडेशन द्वारा एक समान उपकरण है।

अधिक जानकारी के लिए यहां एक नजर है:

20

MSBuild का मुख्य लाभ यह है कि आप दृश्य स्टूडियो स्थापित करने की आवश्यकता नहीं है। MSBuild की

एक सीमा है कि यह दृश्य स्टूडियो सेटअप परियोजनाओं (.vdproj) के निर्माण का समर्थन नहीं करता है।

(आप इस के आसपास defining an exec task which calls devenv से काम कर सकते हैं, लेकिन फिर आप अभी भी दृश्य स्टूडियो की जरूरत है।)

4

एक और बड़ा अंतर यह है कि msbuild में कुछ विकल्प हैं जो devenv के लिए मौजूद नहीं हैं। जहाँ तक मेरा बता सकते हैं, वहाँ devenv के लिए शब्दाडंबर को बढ़ाने के लिए कोई रास्ता नहीं है, लेकिन आप विकल्प द्वारा msbuild के लिए शब्दाडंबर को बढ़ा सकते हैं:

/v:diag 
1

मैं एक मामले में जहां devenv एक त्रुटि संदेश में लिखा था जब एक प्रोजेक्ट फाइल था का सामना करना पड़ा गायब है, लेकिन वैसे भी 0 लौटा। इसके विपरीत, msbuild ने एक गैर-शून्य मूल्य वापस कर दिया। मैंने msbuild का उपयोग करने के लिए हमारे मेकफ़ाइल को स्विच किया ताकि हम त्रुटियों को नजरअंदाज न करें।

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