MSBuild लॉग के लिए डिफ़ॉल्ट स्थान क्या है?


102

मैं विजुअल स्टूडियो एक्सप्रेस 2012 का उपयोग कर रहा हूं। लॉग फाइल का स्थान कहां है? मैंने उस फ़ोल्डर में खोज की है जहाँ मेरा समाधान और परियोजनाएँ संग्रहीत हैं, लेकिन कोई भी .log फ़ाइल नहीं मिल सकती है।

यह लॉगिंग के लिए कॉन्फ़िगरेशन है:

यहां छवि विवरण दर्ज करें


1
कोई डिफ़ॉल्ट .log फ़ाइल नहीं है। आउटपुट विंडो में देखें।
हँस पसंत

13
@ हंस, मेरे मामले में, आउटपुट विंडो में यह कहते हुए संदेश हैं कि "बिल्ड लॉग में अधिक जानकारी उपलब्ध है।" इसलिए कहीं एक अलग लॉग है। मुझे अभी तक नहीं मिला है।
ब्रैंडन कुक्ज़ेंस्की

जवाबों:


106

Visual Studio से लॉग फ़ाइल केवल C ++ प्रोजेक्ट्स के लिए समर्थित है। आपको बस दूसरों के लिए आउटपुट विंडो के साथ काम करना होगा।

इस समान धागे को देखें: VS2010: आउटपुट में न्यूनतम बिल्ड लॉग और लॉग फाइल में विस्तृत लॉग

और यदि आप ऐसा C ++ प्रोजेक्ट के लिए करते हैं, तो फाइल इस प्रकार है :

... मध्यवर्ती फ़ाइल निर्देशिका में लॉग का निर्माण करें ... बिल्ड लॉग का पथ और नाम MSBuild मैक्रो अभिव्यक्ति द्वारा दर्शाया गया है $(IntDir)\$(MSBuildProjectName).log,।


14
मुझे लगता है कि यह केवल विजुअल स्टूडियो की मूर्खतापूर्ण है कि एक फाइल में विस्तृत लॉगिंग न हो। ओह ठीक है, एक वास्तविकता मुझे स्वीकार करनी होगी। आपके उत्तर के लिए धन्यवाद, @Dmitry
Hanxue

8
@hanxue - इसमें एक लॉग है। वह लॉग बस एक फ़ाइल में नहीं भेजा जाता है। यदि आप एक लॉग फ़ाइल चाहते हैं, तो कमांड लाइन से msbuild चलाएं।
रिच मेल्टन

43
तब यह क्यों नहीं है:
साइमन_वेअर

2
परमेश्वर। लानत है। इस समाधान पर सिर्फ एक संपत्ति क्यों नहीं है? आउटपुट विंडो इतना भयानक प्रदर्शन क्यों है वैसे भी आप इसे हर समय कम से कम आउटपुट पर रखने के लिए मजबूर हैं, और एक आउटपुट स्तर से दूसरे में बदलने के लिए 8 चरणों की तरह क्यों है? कृपया इनमें से किसी को भी ठीक करें।
जेम्स

@ मुझे लगता है कि आप एक मैक्रो लिखने और इसे टूलबार बटन पर असाइन करने में सक्षम हो सकते हैं। ये लिंक एक शुरुआती बिंदु stackoverflow.com/questions/12062515/… और vlasovstudio.com/visual-commander
दिमित्री पावलोव

25

फ़ाइल में लॉग इन करने के बजाय बिल्ड आउटपुट का उपयोग करें। कॉपी / पेस्ट के बजाय, आउटपुट में कहीं क्लिक करें और बचाने के लिए CTRL + S दबाएँ। दृश्य स्टूडियो आपको एक स्थान के लिए संकेत देगा (दृश्य स्टूडियो 2017 के साथ परीक्षण किया गया है, लेकिन मैं इस काम को पहले के संस्करणों में भी मान रहा हूं)।

यहां छवि विवरण दर्ज करें


यह अच्छा है। उन्हें इसे संदर्भ मेनू में भी रखना चाहिए।
शीन

23

Msdn प्रलेखन इस बारे में बहुत स्पष्ट है (और आप इसे पसंद नहीं करेंगे!):

https://msdn.microsoft.com/en-us/library/jj651643.aspx

यह कहां कहा गया है:

किसी प्रबंधित-कोड प्रोजेक्ट के लिए बिल्ड लॉग फ़ाइल बनाने के लिए मेनू पट्टी पर, बिल्ड, बिल्ड समाधान चुनें।

आउटपुट विंडो में, बिल्ड से जानकारी को हाइलाइट करें, और फिर इसे क्लिपबोर्ड पर कॉपी करें।

एक पाठ संपादक खोलें, जैसे कि नोटपैड, फ़ाइल में जानकारी पेस्ट करें, और फिर इसे सहेजें।


16
जब तक आप डायग्नोस्टिक आउटपुट का उपयोग नहीं करते हैं, तब तक सब ठीक और अच्छा होता है और जब आप क्लिपबोर्ड पर कॉपी करने की कोशिश करते हैं तो वीएस 'मेमोरी से बाहर' फेंक देता है। आईडीई में फ़ाइल में बिल्ड लॉग भेजने का समर्थन करने के लिए वास्तव में एक मूल रूप से बेवकूफ निर्णय है। लेकिन हे हो, ऐसी जिंदगी है।
स्टीव पेटीफ़र

1
एक पाठ फ़ाइल में निर्माण पाइप? msbuild mysln.sln> output.txt (संकलन करने के लिए अपने sln को प्राप्त करने के लिए संभवतः इसमें पैरामीटर जोड़ने की आवश्यकता होगी, लेकिन आपको यह स्लैग करने में सक्षम होना चाहिए कि बनाम आउटपुट विंडो से सही वर्बोसिटी स्तर पर स्थित)
डैनियल एम

आमतौर पर जब मैं कमांड लाइन पर निर्माण करता हूं, तो मैं अपने बिल्ड सिस्टम को टर्मिनल विंडो पर न्यूनतम जानकारी देता हूं, लेकिन एक फाइल के लिए एक विस्तृत लॉग। MSBuild ऐसा कर सकते हैं।
सी जॉनसन

"और आप इसे पसंद नहीं करेंगे!" यह सब कुछ 6 शब्दों में बताता है, धन्यवाद
FIV

2

हालांकि यह सच है कि VS इसे सीधे अनुमति नहीं देता है, फिर भी MSBuild के साथ "VS2015" के अंदर निर्माण करना और बिल्ड विंडो आउटपुट और लॉग फाइल दोनों प्राप्त करना संभव है, निम्नानुसार है: (संभवतः यह एक हैक का एक सा है।)

  1. अपने VS प्रबंधित समाधान में, एक नया प्रोजेक्ट जोड़ें (इसे 'मेक' कहते हैं)। ए। प्रोजेक्ट प्रकार जो आप चाहते हैं, वह दृश्य C ++ / NMake प्रोजेक्ट है।
  2. MSBuild कमांड को आप कमांड लाइन पर देखें (नीचे देखें)।
  3. सामान्य प्रबंधित परियोजनाओं के बजाय NMake प्रोजेक्ट बनाने के लिए समाधान कॉन्फ़िगरेशन बदलें।

यह एक ऐसी परियोजना का निर्माण करेगा जिसमें बिल्ड, पुनर्निर्माण और क्लीन कमांड लाइनें हैं जहां आप सीधे MSBuild निष्पादित कर सकते हैं। उदाहरण के लिए:

पुनर्निर्माण: MSBuild.exe /ds /v:diag /property:Configuration=Debug ..\BuildTest\BuildTest.csproj /t:Clean,Build

बिल्ड: MSBuild.exe /ds /v:diag /property:Configuration=Debug ..\BuildTest\BuildTest.csproj /t:Build

स्वच्छ: MSBuild.exe /ds /v:diag /property:Configuration=Debug ..\BuildTest\BuildTest.csproj /t:Clean

आप कई प्रोजेक्ट बनाने के लिए कई MSBuild.EXE कमांड लाइन भी निर्दिष्ट कर सकते हैं। सामान्य बिल्ड-द-संपूर्ण-समाधान परिणाम के लिए आप केवल अंतिम अंत विधानसभाओं को लक्षित कर सकते हैं और निर्भरता ग्राफ को व्यक्तिगत लक्ष्य उत्पन्न कर सकते हैं।

यह एक .log फ़ाइल का उत्पादन करेगा, जहाँ NAME आपके द्वारा उपयोग की गई NMake परियोजना का नाम है। ऊपर के उदाहरण में, लॉग मेक.लॉग होगा।

एक कार्यकारी उदाहरण GitHub पर उपलब्ध है: https://github.com/bitblitz/VS_MsbuildExample (VS2015 के साथ परीक्षण)

ध्यान दें कि व्यक्तिगत परियोजनाओं का निर्माण सीधे अभी भी सामान्य वीएस व्यवहार के साथ होगा, लेकिन आप वीएस के अंदर पूर्ण समाधान का निर्माण कर सकते हैं और बिल्ड लॉग प्राप्त कर सकते हैं।


1
VS_MsbuildExample का लिंक टूट गया है।
जेपीगेट

अरे @ ब्रैड GitHub पर आपके उदाहरण का क्या हुआ?
यं दुरन

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