c# क्या गलत हो रहा है जब विजुअल स्टूडियो ने मुझे बताया "xcopy कोड 4 से बाहर निकला"




visual-studio-2010 visual-studio-2012 (8)

मैं स्वीकृत उत्तर के अलावा, त्रुटि तब भी हो सकती है जब गंतव्य फ़ोल्डर केवल पढ़ने के लिए (सामान्य रूप से TFS का उपयोग करते समय)

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

The command "xcopy C:\Users\Me\Path\Foo.bar\Library\dsoframer.ocx C:\Users\Me\Path\Foo.bar\bin\Debug\ /Y /E /D
xcopy C:\Users\Me\Path\Foo.bar\ApplicationFiles C:\Users\Me\Path\Foo.bar\bin\Debug\ /Y /E /D
xcopy C:\Users\Me\Path\url\ C:\Users\Me\Path\Foo.bar\bin\Debug\ /Y /E /D
rmdir /S /Q C:\Users\Me\Path\Foo.bar\bin\Debug\.gwt-tmp" exited with code 4.    

इस त्रुटि के बावजूद कार्यक्रम ठीक चल रहा है, लेकिन मैं इस मुद्दे को अनदेखा नहीं करना चाहता हूं और उम्मीद करता हूं कि कुछ भी बुरा नहीं होता है। आश्चर्यजनक रूप से, यह लाइन केवल एक ही कमांड (पहली एक्सकॉपी) के रूप में शुरू हुई, लेकिन जैसा कि मैंने प्रोजेक्ट को संकलित करना जारी रखा (अन्य समस्याओं को ठीक करना, ज्यादातर संदर्भ) त्रुटि संदेश बड़ा और बड़ा विस्तार हुआ। कोई विचार क्या हो सकता है?

संपादित करें: यहां पोस्टबिल्ड घटनाएं हैं जो विफल होने लगती हैं -

xcopy $(ProjectDir)Library\dsoframer.ocx $(TargetDir) /Y /E /D
xcopy $(ProjectDir)ApplicationFiles $(TargetDir) /Y /E /D
xcopy $(SolutionDir)com.myUrl.gwt\www $(TargetDir) /Y /E /D
rmdir /S /Q $(TargetDir).gwt-tmp

एक्सकॉपी निकास कोड 4 का अर्थ है " प्रारंभिक त्रुटि हुई। पर्याप्त स्मृति या डिस्क स्थान नहीं है, या आपने कमांड लाइन पर अमान्य ड्राइव नाम या अमान्य वाक्यविन्यास दर्ज किया है। "

ऐसा लगता है कि विजुअल स्टूडियो xcopy को अमान्य तर्क प्रदान कर रहा है। Project Properties > Right Click > Build Events > Post Build Event माध्यम से अपना पोस्ट-बिल्ड इवेंट कमांड देखें।

ध्यान दें कि अगर $(ProjectDir) या इसी तरह के मैक्रो शब्दों में विस्तारित पथों में रिक्त स्थान होते हैं, तो उन्हें डबल कोट्स में लपेटने की आवश्यकता होगी। उदाहरण के लिए:

xcopy "$(ProjectDir)Library\dsoframer.ocx" "$(TargetDir)" /Y /E /D1

अगर स्रोत फ़ाइल नहीं मिली तो xcopy त्रुटि कोड 4 देता है।


घड़ी टैब को "ouput" पर स्विच करें और xcopy कमांड को देखें। कभी-कभी आपको कुछ और संदेश (वास्तविक xcopy आउटपुट) मिल जाता है जो आपको समस्या को हल करने में मदद कर सकता है। यदि आपको आउटपुट टैब नहीं दिखाई देता है, तो इसे दिखाने के लिए व्यू-आउटपुट मेनू का उपयोग करें।


मुझे यह संदेश मिला

अमान्य ड्राइव विनिर्देश

जब ड्राइव नाम निर्दिष्ट किए बिना किसी नेटवर्क शेयर पर प्रतिलिपि बनाते हैं, उदाहरण के लिए

xcopy . \\localhost

कहा पे

xcopy . \\localhost\share

अपेक्षित था


इसका मतलब है :

प्रारंभिक त्रुटि हुई। पर्याप्त मेमोरी या डिस्क स्पेस नहीं है, या आपने कमांड लाइन पर अमान्य ड्राइव नाम या अमान्य वाक्यविन्यास दर्ज किया है।

तो मूल रूप से यह कुछ भी होहा के बारे में हो सकता है ... कमांड प्रॉम्प्ट से एक बार कमांड को चलाने का प्रयास करें ताकि यह पता लगाया जा सके कि कौन सा हिस्सा आपको परेशानी दे रहा है।


जैसा कि अन्य उत्तरों समझाते हैं, कोड 4 से बाहर निकलने के कई कारण हो सकते हैं।

मैंने एक मामला देखा, जिसके परिणामस्वरूप पथ नाम अधिकतम अनुमत लंबाई ( here तरह) से अधिक हो गए।

मैंने प्रभावित पोस्ट बिल्ड इवेंट के लिए रोबोकॉपी द्वारा एक्सकोपी को बदल दिया है; रोबोकॉपी पथों को थोड़ा अलग तरीके से संभालने लगता है और कॉपी कार्य को पूरा करने में सक्षम था कि xcopy संभाल करने में असमर्थ था।


मुझे ' कोड 4 से बाहर निकला ' त्रुटि मिली जब xcopy कमांड ने एक पठनीय फ़ाइल को ओवरराइट करने का प्रयास किया। मैं xcopy कमांड को / आर जोड़कर इस समस्या को हल करने में कामयाब रहा। / आर इंगित करता है कि केवल पढ़ने वाली फाइलों को ओवरराइट किया जाना चाहिए

पुराना आदेश:

XCOPY /E /Y "$(ProjectDir)source file" "destination"

नया आदेश

XCOPY /E /Y /R "$(ProjectDir)source file" "destination"






xcopy