webentwicklung-frage-antwort-db.com.de

Was ist falsch, wenn Visual Studio mir mitteilt, dass "xcopy mit Code 4 beendet wurde"

Ich bin mit Post-Build-Ereignissen nicht sehr vertraut, daher bin ich etwas verwirrt, was mit meinem Programm schief läuft. Beim Compilieren in Visual Studio 2010 bekomme ich Folgendes:

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.    

Das Programm scheint läuft trotz dieses Fehlers einwandfrei, aber ich möchte dieses Problem nicht einfach ignorieren und hoffe, dass nichts Schlimmes passiert. Seltsamerweise begann diese Zeile nur mit einem einzigen Befehl (der ersten xcopy), aber als ich das Projekt weiter kompilierte (andere Probleme beheben, meist Referenzen), wurde die Fehlermeldung immer größer. Irgendeine Idee, was los sein könnte?

Bearbeiten: Hier sind die Postbuild-Ereignisse, die anscheinend fehlschlagen -

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
106
Raven Dreamer

Xcopy-Exit-Code 4 bedeutet " Ein Initialisierungsfehler ist aufgetreten. Es ist nicht genügend Speicher oder Speicherplatz vorhanden oder Sie haben einen ungültigen Laufwerksnamen oder eine ungültige Syntax in die Befehlszeile eingegeben. "

Es sieht so aus, als ob Visual Studio ungültige Argumente an xcopy liefert. Überprüfen Sie Ihren Post-Build-Ereignisbefehl über Project Properties > Right Click > Build Events > Post Build Event.

Wenn die $(ProjectDir)- oder ähnlichen Makro-Begriffe beim Erweitern Leerzeichen in den resultierenden Pfaden enthalten, müssen sie in doppelte Anführungszeichen gesetzt werden. Zum Beispiel:

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

Wechseln Sie die Watch-Registerkarte zum "ouput" und suchen Sie nach dem Befehl xcopy. Manchmal finden Sie hier einige weitere Meldungen (die eigentliche Xcopy-Ausgabe), die Ihnen bei der Lösung des Problems helfen können. Wenn die Registerkarte "Ausgabe" nicht angezeigt wird, verwenden Sie das Menü "Ansicht - Ausgabe".

30
Felice Pollano

Neben der akzeptierten Antwort kann der Fehler auch auftreten, wenn der Zielordner schreibgeschützt ist (häufig bei Verwendung von TFS).

27
Pieter

Wenn die Quelldatei nicht gefunden wird, gibt xcopy auch den Fehlercode 4 zurück.

16
Der_Meister

Ich habe die Fehlermeldung "exited with code 4" erhalten, als der Befehl xcopy versuchte, eine Readonly-Datei zu überschreiben. Ich konnte dieses Problem lösen, indem ich dem Befehl xcopy / R hinzufügte. Das / R gibt an, dass read only Dateien überschrieben werden sollen

alter Befehl:

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

neuer Befehl

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

Wie andere Antworten erklären, kann exit code 4 viele Ursachen haben.

Ich habe einen Fall bemerkt, bei dem resultierende Pfadnamen die maximal zulässige Länge überschritten haben (genau wie hier ).

Ich habe xcopy durch Robocopy für das betroffene Postbuild-Ereignis ersetzt. robocopy scheint Pfade etwas anders zu handhaben und konnte die Kopieraufgabe abschließen, die xcopy nicht ausführen konnte.

8
CodeFox

Es bedeutet :

Initialisierungsfehler aufgetreten. Es ist nicht genügend Arbeitsspeicher oder Speicherplatz vorhanden, oder Sie haben einen ungültigen Laufwerksnamen oder eine ungültige Syntax in die Befehlszeile eingegeben.

Im Grunde könnte es sich also um alles handeln, haha ​​... versuchen Sie, den Befehl nacheinander mit dem Befehl Prompt auszuführen, um herauszufinden, welcher Teil des Befehls Ihnen Probleme bereitet.

5
BrandonZeider

Ich habe das mit der Nachricht verstanden

Ungültige Laufwerksspezifikation

wenn Sie auf eine Netzwerkfreigabe kopieren, ohne den Laufwerknamen anzugeben, z.

xcopy . \\localhost

woher

xcopy . \\localhost\share

war erwartet

3
Thomas Weller

In meinem Fall war das Problem auf eine falsche Build-Reihenfolge zurückzuführen. Ein Projekt hatte einen Xcopy-Befehl für Nachbauereignisse, um Dateien aus dem Bin-Ordner in einen anderen Ordner zu kopieren. Aufgrund falscher Abhängigkeiten wurden jedoch im Bin-Ordner neue Dateien erstellt, während xcopy ausgeführt wird.

Klicken Sie in VS mit der rechten Maustaste auf das Projekt, in dem Sie Ereignisse nach dem Build haben. Wechseln Sie zu Build Dependencies> Project Dependencies und stellen Sie sicher, dass es korrekt ist. Überprüfen Sie auch die Projekterstellungsreihenfolge (nächste Registerkarte mit Abhängigkeiten).

1
sree

Ich hatte das gleiche Problem. Sie können auch überprüfen, in welche Richtung der Schrägstrich zeigt. Für mich funktionierte es, Backslash anstelle von Schrägstrich zu verwenden. Beispiel

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

Anstatt:

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

Eine weitere Sache, auf die Sie achten sollten, sind doppelte Backslashes, da xcopy sie im Eingabepfadparameter nicht toleriert (aber do im Ausgabepfad toleriert ...).

 enter image description here

0
Elaskanator

Ich hatte einen Post-Build-Befehl, der einwandfrei funktioniert hat, bevor ich ein Update für VS 2017. durchgeführt habe. Es stellte sich heraus, dass die SDK-Tools aktualisiert wurden und sich unter einem neuen Pfad befanden, sodass ich das Tool, das ich zum Signieren verwendete, nicht finden konnte Baugruppen.

Das hat sich geändert ....

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"

Zu diesem ...

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

Sehr subtile, aber entscheidende Änderung. Überprüfen Sie Ihre Pfade nach einem Update, wenn Sie diesen Fehler sehen. 

0
Fütemire

Ich bin auf dieses Problem gestoßen, also habe ich den Befehl xcopy von der Kommandozeile aus ausgeführt und es sagte:

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

Es war eigentlich Visual Studio, das an etwas festhielt. Ich habe gerade Visual Studio neu gestartet und es hat funktioniert.

0
NielW