मैं कमांड-लाइन से विज़ुअल स्टूडियो प्रोजेक्ट कैसे संकलित करता हूं?


112

मैं एक बड़े C ++ समाधान के लिए चेकआउट, बिल्ड, डिस्ट्रीब्यूशन, टेस्ट और कमिटिंग साइकलिंग कर रहा हूं जो कि मोनोटोन , सीएमके , विजुअल स्टूडियो एक्सप्रेस 2008 और कस्टम टेस्ट का उपयोग कर रहा है।

अन्य सभी भाग बहुत सीधे-अग्रगामी लगते हैं, लेकिन मैं यह नहीं देखता कि GUI प्राप्त किए बिना विज़ुअल स्टूडियो समाधान कैसे संकलित किया जाए।

स्क्रिप्ट पायथन में लिखी गई है, लेकिन एक उत्तर जो मुझे सिर्फ एक कॉल करने की अनुमति देगा: os.system करेगा।

जवाबों:


116

मैं इसे करने के दो तरीके जानता हूं।

विधि 1
पहली विधि (जो मुझे पसंद है) msbuild का उपयोग करना है :

msbuild project.sln /Flags...

विधि 2
आप भी चला सकते हैं:

vcexpress project.sln /build /Flags...

Vcexpress विकल्प तुरंत लौटता है और कोई आउटपुट प्रिंट नहीं करता है। मुझे लगता है कि हो सकता है कि आप एक स्क्रिप्ट के लिए क्या चाहते हैं।

ध्यान दें कि DevEnv को विजुअल स्टूडियो एक्सप्रेस 2008 के साथ वितरित नहीं किया गया है (जब मैंने पहली बार इसी तरह का मुद्दा उठाया था, तो यह जानने की कोशिश में बहुत समय लगा था)।

तो, अंतिम परिणाम हो सकता है:

os.system("msbuild project.sln /p:Configuration=Debug")

आप यह भी सुनिश्चित करना चाहेंगे कि आपका वातावरण चर सही हो, क्योंकि msbuild और vcexpress सिस्टम पथ पर डिफ़ॉल्ट रूप से नहीं हैं। या तो Visual Studio बिल्ड वातावरण शुरू करें और वहां से अपनी स्क्रिप्ट चलाएँ, या Python ( os.putenv के साथ ) में पथों को संशोधित करें ।


यह विजुअल स्टूडियो 2010 एक्सप्रेस के लिए भी लागू है।
शमूएल हैमर

एमएसबिल्ट वीएस 2008 के साथ शिपिंग नहीं लगता है
लकी ल्यूक

46

MSBuild आमतौर पर काम करता है, लेकिन मैं पहले कठिनाइयों में चला गया हूँ। आपके साथ बेहतर किस्मत हो सकती है

devenv YourSolution.sln /Build 

MSBuild दृश्य फोरट्रान परियोजनाओं (* .vfproc) के साथ काम नहीं करता है। मुझे देवेन की ओर इशारा करने के लिए धन्यवाद, जो करता है।
माईक बेकमैन

मैं का उपयोग करने के लिए कर रहा हूँ: devenv YourSolution.sln / Build लेकिन काम किया महान धन्यवाद।
बोबाह

7
आप विन्यास को भी निर्दिष्ट कर सकते हैं:devenv YourSolution.sln /Build Debug
जोश स्ट्रिब्लिंग

बहुत अच्छा काम करता है। नीचे दी गई कमांड का उपयोग करके एक पुनर्निर्माण भी कर सकते हैंdevenv YourSolution.sln /rebuild
अभिनीत

1
इसके अलावा एक रिलीज या डिबग मोड के लिए सिर्फ एक डिबग या एक स्थान के बाद रिलीज के द्वारा पुनर्निर्माण कर सकते हैं। उदाहरण के लिए: devenv YourSolution.sln /rebuild releaseयाdevenv YourSolution.sln /rebuild debug
अभिनीत

20

ईमानदार होने के लिए मुझे अपने 2 सेंट जोड़ने होंगे।

आप इसे msbuild.exe के साथ कर सकते हैं । Msbuild.exe के कई संस्करण हैं ।

C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ msbuild.exe C: \ Windows \ Microsoft.NET \ फ्रेमवर्क 64 \ v3.5 \ msbuild.exe C: \ Windows \ Microsoft.NET \ फ्रेमवर्क 64 \ v4.0.30319 \ msbuild.exe
C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ msbuild.exe C: \ Windows \ Microsoft.NET \ Framework \ v3.5 \ msbuild.exe C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ MSBuild.exe

आप की जरूरत संस्करण का उपयोग करें। मूल रूप से आपको पिछले एक का उपयोग करना होगा।

C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ MSBuild.exe

तो कैसे करें।

  1. COMMAND विंडो चलाएँ

  2. Msbuild.exe के लिए पथ इनपुट करें

C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ MSBuild.exe

  1. प्रोजेक्ट समाधान के लिए पथ को इनपुट करें

"C: \ Users \ Clark.Kent \ Documents \ Visual Studio 2012 \ Projects \ WpfApplication1 \ WpfApplication1.sln"

  1. समाधान पथ के बाद आपको किसी भी झंडे की ज़रूरत है।

  2. एंटर दबाएं

ध्यान दें कि आप सभी संभव झंडे के बारे में मदद प्राप्त कर सकते हैं

C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ msbuild.exe / सहायता


6
मुझे वास्तव में पसंद आया है कि आपने नए डेवलपर्स के लिए विवरण कैसे जोड़े हैं, जैसे कि
एमएसबिल्ट

8

msbuildदूसरों द्वारा बताए अनुसार प्रयोग करना मेरे लिए काम कर गया लेकिन मुझे उससे थोड़ा अधिक करने की आवश्यकता थी। सबसे पहले, msbuildसंकलक तक पहुंच की आवश्यकता है। इसे चलाकर किया जा सकता है:

"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"

तब msbuildमेरे $ पेट में नहीं था इसलिए मुझे इसके स्पष्ट रास्ते से भागना पड़ा:

"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe" myproj.sln

अंत में, मेरी परियोजना कुछ चर जैसे उपयोग कर रही थी $(VisualStudioDir)। ऐसा लगता है कि वे सेट नहीं करते हैं msbuildइसलिए मुझे उन्हें /propertyविकल्प के माध्यम से मैन्युअल रूप से सेट करना पड़ा :

"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe" /property:VisualStudioDir="C:\Users\Administrator\Documents\Visual Studio 2013" myproj.sln

उस लाइन ने आखिरकार मुझे अपनी परियोजना को संकलित करने की अनुमति दी।

बोनस : ऐसा लगता है कि कमांड लाइन टूल को "मुफ्त" GUI- आधारित विज़ुअल स्टूडियो कम्युनिटी एडिशन के उपयोग के 30 दिनों के बाद पंजीकरण की आवश्यकता नहीं है। जगह में Microsoft पंजीकरण की आवश्यकता के साथ, वह संस्करण शायद ही मुफ्त है। फ्री-इन-फेसबुक के रूप में अगर कुछ भी ...



3

DEVENV कई मामलों में अच्छी तरह से काम करता है, लेकिन मेरे विजिटर इंस्टॉलर के निर्माण के लिए एक USCPROJ पर, मुझे जो भी मिला है वह है "CATASTROPHIC" आउट लॉग में त्रुटि।

यह काम करता है: MSBUILD /Path/PROJECT.WIXPROJ / t: बिल्ड / पी: कॉन्फ़िगरेशन = रिलीज़

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.