क्या गलत हो रहा है जब विज़ुअल स्टूडियो मुझे बताता है "कोड 4 के साथ एक्सकॉपी बाहर निकली है"


125

मैं निर्माण के बाद की घटनाओं से बहुत परिचित नहीं हूं, इसलिए मैं थोड़ा भ्रमित हूं कि मेरे कार्यक्रम में क्या गलत है। दृश्य स्टूडियो 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) के रूप में शुरू हुई, लेकिन जैसा कि मैंने परियोजना को संकलित करना जारी रखा (अन्य समस्याओं को हल करना, ज्यादातर संदर्भ) त्रुटि संदेश बड़ा और बड़ा हो गया। किसी भी विचार क्या हो सकता है?

संपादित करें: यहां वे पोस्टबॉइंट इवेंट हैं जो विफल हो रहे हैं -

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

2
नीचे दिए गए उत्तरों के अलावा, VS को भी खोलना सुनिश्चित करें Administrator privileges। विशिष्ट स्थानों पर कॉपी करने के लिए व्यवस्थापक अधिकारों की आवश्यकता होती है।
निखिल अग्रवाल

जवाबों:


166

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

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

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

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

जैसा कि मैंने कहा, मैं पोस्ट-बिल्ड इवेंट स्क्रिप्ट के बारे में ज्यादा नहीं जानता (और मैंने ये नहीं लिखा); मुझे ये कहां मिल सकता है?
रेवेन ड्रीमर

1
प्रोजेक्ट प्रॉपर्टीज पर जाएं> बिल्ड इवेंट्स
मार्क सिडेड

2
प्रत्येक कमांड को डबल कोट्स ( "command args") के साथ लपेटने का प्रयास करें ।
थॉमस

@ मर्क सिडेड - मुझे कहीं भी "बिल्ड इवेंट्स" नहीं लगता। सूचीबद्ध सामान्य गुण: "स्टार्टअप परियोजना; परियोजना निर्भरता; डिबग स्रोत फ़ाइलें; कोड विश्लेषण सेटिंग्स"। सूचीबद्ध कॉन्फ़िगरेशन गुण: "कॉन्फ़िगरेशन"।
रेवेन ड्रीमर

4
@RavenDreamer: यदि $(ProjectDir)(और / या समान) में विस्तारित पथ में रिक्त स्थान हैं, तो इसे उद्धरणों में लपेटने की आवश्यकता होगी। उदाहरण के लिए:xcopy "$(ProjectDir)Library\dsoframer.ocx" "$(TargetDir)" /Y /E /D1
थॉमस थॉमस

34

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


30

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


2
और कुछ आप देख सकते हैं कि क्या आप आउटपुट विंडो पर स्विच करते हैं जैसा कि नीचे दिए गए @FelicePollano के रूप में है।
जेडीजा

20

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


3
यह मेरा मामला था। मैंने इस्तेमाल किया $(TargetDir)जो के साथ समाप्त होता है Release\ । मेरे लिए काम $(ProjectDir)\bin\Releaseकर रहे अनुगामी के बिना उपयोग करना\\
बहुराष्ट्रीय कंपनी

12

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

पुराना आदेश:

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

नया आदेश

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

8

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

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

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


5

इसका मतलब है :

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

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


3

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

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

जब ड्राइव नाम निर्दिष्ट किए बिना किसी नेटवर्क शेयर पर कॉपी करना, जैसे

xcopy . \\localhost

कहाँ पे

xcopy . \\localhost\share

अपेक्षित था


2

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

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

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


1

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

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


1

यह त्रुटि तब होती है जब आपके रेपो की प्रतिलिपि बनाने वाले सफेद स्थान होते हैं। उदाहरण के लिए मेरा प्रोजेक्ट नीचे स्थान पर कॉपी किया गया है c://projects/My rest project तो आप वहां सफेद स्थान देख सकते हैं, यदि आप नीचे अपना रेपो पथ बदलते हैं तो यह काम करना चाहिए c://projects/myrestproject


0

मुझे भी यही समस्या थी। आप यह भी जांच सकते हैं कि स्लैश किस तरफ इशारा कर रहा है। मेरे लिए यह फॉरवर्ड स्लैश के बजाय बैकस्लैश का उपयोग करने के लिए काम किया। उदाहरण

xcopy /s /y "C:\SFML\bin\*.dll" "$(OutDir)"

के बजाय:

xcopy /s /y "C:/SFML/bin/*.dll" "$(OutDir)"

0

मेरे पास एक पोस्ट बिल्ड कमांड था जो ठीक काम करता था इससे पहले कि मैंने वीएस 2017 पर एक अपडेट किया। यह पता चला कि एसडीके उपकरण अपडेट किए गए थे और एक नए रास्ते के तहत थे इसलिए यह उपकरण नहीं मिल सका जिसका उपयोग मैं अपनी विधानसभाओं पर हस्ताक्षर करने के लिए कर रहा था।

इससे यह बदल गया ...।

call "%VS140COMNTOOLS%vsvars32"
    "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools\x64\sn.exe" -Ra "$(TargetPath)" "$(ProjectDir)Key.snk"

इसके लिए...

"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\x64\sn.exe" -Ra "$(TargetPath)" "$(ProjectDir)Key.snk"

बहुत सूक्ष्म लेकिन परिवर्तन को तोड़ना, इसलिए यदि आप इस त्रुटि को देखते हैं तो अपडेट के बाद अपने रास्तों की जांच करें।


0

देखने के लिए एक और बात डबल बैकस्लैश है, क्योंकि xcopyउन्हें इनपुट पथ पैरामीटर में बर्दाश्त नहीं किया जाता है (लेकिन यह आउटपुट पथ में उन्हें बर्दाश्त करता है ...)।

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


0

यदि कोई अन्य समाधान डिबग मोड में है, तो पहले उन सभी को रोक दें और उसके बाद दृश्य स्टूडियो को पुनरारंभ करें। इसने मेरे लिए काम किया।


0

यह तब भी आ सकता है जब लक्ष्य फ़ोल्डर कुछ अन्य प्रक्रियाओं द्वारा उपयोग किया जाता है । उन सभी प्रोग्रामों को बंद करें जो लक्ष्य फ़ोल्डर का उपयोग कर सकते हैं और कोशिश कर सकते हैं।

आप संसाधन मॉनिटर (विंडोज़ टूल) का उपयोग उन प्रक्रियाओं की जांच करने के लिए कर सकते हैं जो आपके लक्ष्य फ़ोल्डर का उपयोग करती हैं।

यह मेरे लिए काम किया !.

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