2012-08-13 8 views
42

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

msbuild mysolution.sln /p:Configuration=Release /p:Platform="Any CPU" 

हालांकि, वहाँ मतभेद हैं।

विजुअल स्टूडियो प्रक्रिया को प्रभावित करने के लिए एमएसबिल्ड में कौन से पैरामीटर पास करता है? क्या निर्माण के रूप में गुज़रने वाले पैरामीटर को देखने का कोई तरीका है निष्पादित किया गया है?

+0

तकनीकी रूप से, यह 'MSBuild.exe' नहीं चलाता है लेकिन आंतरिक रूप से बिल्ड इंजन होस्ट करता है, अधिक जानकारी के लिए मेरा उत्तर देखें। –

उत्तर

31

दृश्य स्टूडियो MSBuild.exe निष्पादित नहीं करता है में कमांड लाइन तर्क देखें, लेकिन (Microsoft.Build.* विधानसभाओं के माध्यम से) निर्माण इंजन खुद को होस्ट करता है - कम से कम यह है कि डिफ़ॉल्ट सी # परियोजना प्रणाली के लिए मामला। अन्य भाषाएं, एडिन, पैकेज इत्यादि अलग-अलग कर सकती हैं।

दरअसल, इसके बारे में माइक्रोसॉफ्ट ब्लॉग पर एक पोस्ट श्रृंखला थी, मैं उन्हें ढूंढने और इस उत्तर को अपडेट करने की कोशिश कर रहा हूं।

अद्यतन: इसे फिर से मिला। "विजुअल स्टूडियो में एमएसबिल्ड" पोस्ट here देखें।

अपने मूल प्रश्न के बारे में, this पृष्ठ आपको और मदद कर सकता है। इसके अलावा आप "टूल्स", "विकल्प", "प्रोजेक्ट्स एंड सॉल्यूशंस", "बिल्ड एंड रन" पर जा सकते हैं और एमएसबिल्ड आउटपुट वर्बोजिटी बढ़ा सकते हैं। "डायग्नोस्टिक" के साथ आपको मूल रूप से निर्माण शुरू करने पर सेट की गई प्रत्येक संपत्ति को देखना चाहिए।

+1

मैं बाहरी एमएसबिल्ड प्रक्रिया कभी नहीं देख सकता था, इसलिए मुझे उम्मीद थी कि होस्टिंग मामला था। डायग्नोस्टिक सेटिंग जो मैं चाहता हूं उसके करीब लगता है, लेकिन अगर कोई भी मौजूद है, तो यह समकक्ष MSBuild कमांड लाइन सिंटैक्स को समझना कठिन बनाता है। –

+0

@ प्रोग्रामिंगहेरो यह बात है - ऐसी कोई कमांड लाइन नहीं है।आपको इसके विपरीत गुणों के विपरीत "रिवर्स इंजीनियरिंग" के साथ आना होगा। –

+0

मैंने इसे एक अच्छा संदर्भ लेख http://blogs.msdn.com/b/msbuild/archive/2006/01/06/508981.aspx के रूप में पाया। मैं इसे आपके उत्तर में संपादित कर दूंगा, लेकिन सोचा कि यह थोड़ा सा अनुमान हो सकता है। शायद आप इसे जोड़ना चाहते हैं तो मैं आपका जवाब स्वीकार कर सकता हूं? –

7

सबसे पहले, आप /v:diag तर्क के साथ एमएसबिल्ड को निदान-स्तर लॉगिंग प्राप्त करने के लिए चला सकते हैं। यह वास्तव में यह पता लगाने में मदद कर सकता है कि एक बिल्ड विफल क्यों हो रहा है।

अन्यथा, हाँ, यदि आप Process Monitor का उपयोग करते हैं, तो आप प्रक्रिया शुरू करने की घटनाओं की निगरानी कर सकते हैं जहां आप प्रक्रिया में भेजे गए विशिष्ट कमांड लाइन देख सकते हैं।

विशेष रूप से:

  • भागो प्रक्रिया मॉनिटर
  • फ़िल्टर »फ़िल्टर ...
  • OperationisProcess Create»
  • OperationisProcess Start जोड़ें »
  • ठीक
  • जोड़े अपने निर्माण भागो वीएस और थ्रू के माध्यम से ough कमांड लाइन MSBuild
  • विस्तार स्तंभ
+0

एमएसबिल्ड को एक अलग प्रक्रिया के रूप में निष्पादित किया गया था, तो यह जाने का तरीका होगा; दुर्भाग्यवश, कम से कम विजुअल स्टूडियो 2010 में, यह एक अलग प्रक्रिया के रूप में दिखाई नहीं देता है। –

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