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




visual-studio-2010 visual-studio-2012 (7)

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

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


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

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

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

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

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

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

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


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

पुराना आदेश:

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

नया आदेश

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

मेरे मामले में यह मुद्दा गलत निर्माण आदेश के कारण था। बिन फ़ोल्डर से दूसरी फ़ोल्डर में फ़ाइलों की प्रतिलिपि बनाने के लिए एक प्रोजेक्ट में पोस्ट-बिल्ड इवेंट्स पर xcopy कमांड था। लेकिन गलत निर्भरताओं के कारण नई फाइलें बिन फ़ोल्डर में बनाई जा रही थीं जबकि xcopy प्रगति पर है।

वीएस में उस परियोजना पर राइट क्लिक करें जहां आपके पास पोस्ट-बिल्ड इवेंट हैं। बिल्ड निर्भरता> परियोजना निर्भरता पर जाएं और सुनिश्चित करें कि यह सही है। प्रोजेक्ट बिल्ड ऑर्डर (निर्भरता के लिए अगला टैब) को भी सत्यापित करें।


मैं इस मुद्दे पर भाग गया, इसलिए मैंने कमांड लाइन से xcopy कमांड चलाया और कहा:

File creation error - The requested operation cannot be performed on a file with
 a user-mapped section open.

यह वास्तव में कुछ पर होकर विजुअल स्टूडियो था। मैंने अभी विजुअल स्टूडियो को पुनरारंभ किया और यह काम किया।


इसका मतलब है :

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

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





xcopy