2015-11-17 11 views
14

मैं दृश्य स्टूडियो कार्य धावक (2015) का उपयोग कर निर्माण से पहले एक गुल कार्य को चलाने के लिए उपयोग कर रहा हूं।कार्य रद्द करें यदि कार्य धावक एक्सप्लोरर कार्य विफल रहता है

मैं इसे स्थापित किया है ताकि जब घूंट कार्यों यह बाहर निकलने के कोड 1 भेजता है और अंत में यह कहते हैं, "प्रक्रिया कोड 1. के साथ समाप्त" विफल रहता है कि हालांकि निर्माण जारी है।

यह टीम शहर में निर्माण रद्द कर देंगे तो एक मुद्दा जुड़ा हुआ टास्क धावक दृश्य स्टूडियो के अंदर लगता है।

मैं कैसे 0 के अलावा किसी अन्य कोड के साथ हो रहा है, तो यह बाहर निकल जाता है से निर्माण रोका जा सकता है?

उत्तर

14

आप सही हैं कि यह एक कार्य धावक मुद्दा प्रतीत होता है। कार्य धावक MSBuild के साथ किसी बिल्ड बिल्ड को विफल करने के लिए संवाद नहीं करता है यदि कोई पहले कार्य विफल रहता है।

इस के आसपास पाने के लिए आपको परियोजना की पूर्व निर्माण घटना के माध्यम से करने के बजाय कार्य धावक बाध्यकारी द्वारा अपने Gulp काम चला सकते हैं।

सेट पूर्व निर्माण घटना

वर्ग पुस्तकालयों के लिए, आप अपनी परियोजना राइट-क्लिक करके और Properties -> Compile -> Build Events... का चयन करके घटनाक्रम बिल्ड पहुँच सकते हैं।

वेब परियोजनाओं के लिए, वे Properties -> Build Events पर स्थित हैं।

gulp -b $(ProjectDir) --gulpfile $(ProjectDir)gulpfile.js my-task

यह आदेश Gulp पूर्ण गुजर कॉल:

यहाँ आदेश मैं, पूर्व निर्माण घटना में Gulp कार्य कॉल करने के लिए अगर यह एक विफलता के साथ बाहर निकल जाता है जो चलने से MSBuild पाएगा प्रयोग किया जाता है कार्य निर्देशिका के लिए पथ और gulpfile.js

नोट्स:

  • मैं संदर्भ और gulp my-task की तरह एक और अधिक सीधे ऊपर आदेश का उपयोग करने की कोशिश कर निर्देशिका मुद्दों काम कर के सभी प्रकार मिल गया।
  • $(ProjectDir)Macros for Build Commands से एक है।
  • यह माना जाता है कि गुलप वैश्विक स्तर पर स्थापित है: npm install -g gulp। देखें jonas.ninja 'कैसे इस आदेश (या एक वैकल्पिक कि वैश्विक निर्भरता की आवश्यकता नहीं है के लिए) में स्थापित निर्माण करने के लिए के लिए रों answer
+0

इस विकल्प के बारे में सोचा नहीं था, धन्यवाद – John

2

मैंने ऊपर डेविडमडेम के समाधान को लागू किया और यह बहुत अच्छा था ... मेरे सिस्टम पर। मैं gulp विश्व स्तर पर स्थापित किया था, लेकिन मेरे सहकर्मियों में से एक नहीं था, इसलिए पूर्व निर्माण घटना विफल हो जाएगा। टास्क धावक एक्सप्लोरर से चल रहा है घूंट परियोजना स्तरीय घूंट स्थापना का उपयोग करता है, लेकिन पूर्व निर्माण स्क्रिप्ट से ही सांस चल वैश्विक घूंट स्थापना का उपयोग करता है।

जहां एक नया डेवलपर घूंट इंस्टॉल नहीं किया है स्थिति को रोकने के लिए, मैं निम्नलिखित करने के लिए davidmdem की पूर्व निर्माण स्क्रिप्ट का विस्तार: (gulp --version || npm install -g [email protected]) & gulp -b $(ProjectDir) --gulpfile $(ProjectDir)gulpfile.js my-task

यह आदेश को स्थापित करता है घूंट (संस्करण 3.9.0 परियोजना मैच के लिए स्तर घूंट स्थापना) केवल यदि वह पहले से स्थापित नहीं है।अब प्रोजेक्ट बनाने से पहले आपको कुछ ऐसा नहीं लगता है जिसे आप सोचना चाहते हैं!


(अद्यतन :)

एक वैकल्पिक (मेरी राय में: बेहतर) इस समस्या का समाधान एक मध्यस्थ के रूप npm उपयोग करने के लिए है। ऊपर दिए गए उदाहरण से निरंतर और संशोधित, मेरे पास एक गल्प कार्य my-task है जिसे कमांड लाइन से बुलाया जा रहा है। इसने ग्लोबल गल्प निर्भरता को हटा दिया और अभी भी ठीक होने पर एमएसबिल्ड को ठीक से रोकता है।

पूर्व निर्माण घटना:

npm run build 

package.json:

"scripts": { 
    "build": "gulp min" 
} 
2

मैं घूंट के साथ काम करने JSHint (अच्छी तरह से मेरे लिए काफी है, शायद के लिए पर्याप्त के लिए असफल निर्माण है अन्य।) मुझे लगता है कि इसे कार्य धावक में सभी कार्यों को शामिल करने के लिए बढ़ाया जा सकता है।

यहाँ है कि मैं क्या इस्तेमाल किया/किया ...

प्रति this पेज के रूप में, मैं जोड़ा/मेरी परियोजना .json, जो prebuild घटना में हुक में संपादित कर ...

"scripts": { 
    "prebuild": [ "gulp default" ] 
    } 

प्रति this पेज के रूप में, मैं अपने JSHint कार्य के लिए निम्नलिखित ...

// ============================= 
// jsHint - error detection 
// ============================= 
gulp.task("jshint", function() { 
    var jshGlobals = [ 
     '$', 
     'jQuery', 
     'window', 
     'document', 
     'Element', 
     'Node', 
     'console' 
    ]; 

    gulp.src([paths.jsFiles, norefs]) 
     .pipe(jshint({ 
      predef: jshGlobals, 
      undef: true, 
      eqnull: true 
     })) 
     .pipe(jshint.reporter('jshint-stylish')) 
     .pipe(jshint.reporter('fail')) 
}); 

बाद के दो लाइनों जा रहा है शामिल सबसे ज्यादा महत्वपूर्ण। यदि आपके पास पहले से नहीं है तो आपको jshint-stylish इंस्टॉल करने की आवश्यकता होगी।

वैकल्पिक रूप से, jshint-stylish के लिए, आप वीएस को इसे आपके लिए संभालने दे सकते हैं। के रूप में अपने पैकेज .json को नीचे दिया गया jshint-stylish के लिए लाइन जब वहाँ (विफल निर्माण के अलावा) एक त्रुटि जो मुझे आगे खुदाई करने के लिए के लिए पर्याप्त है जोड़ें ...

{ 
    "name": "ASP.NET", 
    "version": "0.0.0", 
    "devDependencies": { 
    "es6-promise": "~3.1.2", 
    "gulp": "^3.8.11", 
    "del": "^2.2.0", 
    "jshint": "~2.9.1", 
    "jshint-stylish": "~2.1.0", 
    "gulp-jshint": "~2.0.0", 
    "gulp-flatten": "~0.2.0", 
    "gulp-rename": "~1.2.2", 
    "gulp-cssmin": "0.1.7", 
    "gulp-uglify": "1.2.0", 
    "gulp-postcss": "~6.1.0", 
    "autoprefixer": "~6.3.3" 
    } 
} 

कौन मुझे इस देता है यदि/आवश्यक के रूप में ... vs error list window after build

के रूप में और विस्तृत त्रुटि जानकारी मैं जब कमांड लाइन या टास्क धावक के माध्यम से एक ही काम चलाने के लिए विरोध के रूप में ... gulp default task output via cmd.exe

मैं इस सोल कल्पना ution में सुधार किया जा सकता है लेकिन लगा कि मैं साझा करूंगा क्योंकि मैंने इसे कहीं और नहीं देखा था।

चीयर्स।

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