Ich bin mit Post-Build-Ereignissen nicht sehr vertraut, daher bin ich ein wenig verwirrt darüber, was mit meinem Programm falsch läuft. Beim Kompilieren in Visual Studio 2010 erhalte 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 trotz dieses Fehlers einwandfrei zu laufen, aber ich möchte dieses Problem nicht einfach ignorieren und hoffe, dass nichts Schlimmes passiert. Seltsamerweise begann diese Zeile als nur ein einziger Befehl (die erste xcopy), aber als ich das Projekt weiter kompilierte (Behebung anderer Probleme, hauptsächlich 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
c#
visual-studio-2010
visual-studio-2012
xcopy
Raben-Träumer
quelle
quelle
Administrator privileges
. Für das Kopieren an bestimmte Speicherorte sind Administratorrechte erforderlich.Antworten:
Xcopy-Exit-Code 4 bedeutet " Initialisierungsfehler 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 xcopy ungültige Argumente liefert. Überprüfen Sie Ihren Post-Build-Ereignisbefehl über
Project > Right Click > Properties > Build Events > Post Build Event
.Beachten Sie, dass wenn die
$(ProjectDir)
oder ähnliche Makrobegriffe beim Erweitern Leerzeichen in den resultierenden Pfaden enthalten, diese in doppelte Anführungszeichen gesetzt werden müssen. Beispielsweise:quelle
"command args"
) zu setzen.$(ProjectDir)
(und / oder ähnliche) Leerzeichen im erweiterten Pfad enthält, muss es in Anführungszeichen gesetzt werden. Zum Beispiel:xcopy "$(ProjectDir)Library\dsoframer.ocx" "$(TargetDir)" /Y /E /D1
Schalten Sie die Registerkarte "Beobachten" auf "Ausgabe" und suchen Sie nach dem Befehl "xcopy". Manchmal finden Sie hier eine weitere Meldung (die eigentliche xcopy-Ausgabe), die Ihnen bei der Lösung des Problems helfen kann. Wenn die Registerkarte Ausgabe nicht angezeigt wird, können Sie sie im Menü Ansicht-Ausgabe anzeigen.
quelle
Zusätzlich zur akzeptierten Antwort kann der Fehler auch auftreten, wenn der Zielordner schreibgeschützt ist (häufig bei Verwendung von TFS).
quelle
Wenn die Quelldatei nicht gefunden wird, gibt xcopy auch den Fehlercode 4 zurück .
quelle
$(TargetDir)
was mit endetRelease\
. Verwenden$(ProjectDir)\bin\Release
ohne das Schleppen\\
funktionierte für michIch habe den Fehler "Beendet mit Code 4 " erhalten, als der Befehl xcopy versuchte, eine schreibgeschützte Datei zu überschreiben. Ich konnte dieses Problem lösen, indem ich / R zum Befehl xcopy hinzufügte. Das / R gibt an, dass schreibgeschützte Dateien überschrieben werden sollen
alter Befehl:
neuer Befehl
quelle
Wie andere Antworten erklären, kann der Exit-Code 4 viele Ursachen haben.
Ich bemerkte einen Fall, in dem die resultierenden Pfadnamen die maximal zulässige Länge überschritten (genau wie hier ).
Ich habe xcopy für das betroffene Post-Build-Ereignis durch Robocopy ersetzt. robocopy scheint Pfade etwas anders zu handhaben und konnte die Kopieraufgabe ausführen, die xcopy nicht bewältigen konnte.
quelle
Es bedeutet :
Im Grunde könnte es also fast alles sein, haha ... versuchen Sie, den Befehl einzeln an der Eingabeaufforderung auszuführen, um herauszufinden, welcher Teil des Befehls Ihnen Probleme bereitet.
quelle
Ich habe das zusammen mit der Nachricht verstanden
beim Kopieren auf eine Netzwerkfreigabe ohne Angabe des Laufwerksnamens, z
wo
war erwartet
quelle
Ich bin auf dieses Problem gestoßen, also habe ich den Befehl xcopy über die Befehlszeile ausgeführt und dort stand:
Es war tatsächlich Visual Studio, das an etwas festhielt. Ich habe gerade Visual Studio neu gestartet und es hat funktioniert.
quelle
In meinem Fall lag das Problem an einer falschen Erstellungsreihenfolge. Ein Projekt hatte einen xcopy-Befehl für Ereignisse nach dem Erstellen, um Dateien aus dem bin-Ordner in einen anderen Ordner zu kopieren. Aufgrund falscher Abhängigkeiten wurden jedoch neue Dateien im Ordner bin erstellt, während xcopy ausgeführt wird.
Klicken Sie in VS mit der rechten Maustaste auf das Projekt, in dem Sie Ereignisse nach dem Erstellen haben. Gehen Sie zu Abhängigkeiten erstellen> Projektabhängigkeiten und stellen Sie sicher, dass sie korrekt sind. Überprüfen Sie auch die Projekterstellungsreihenfolge (nächste Registerkarte zu den Abhängigkeiten).
quelle
Dieser Fehler ist darauf zurückzuführen, dass Leerzeichen vorhanden sind, in die Ihr Repo kopiert wird.
c://projects/My rest project
Wenn mein Projekt beispielsweise an der folgenden Stelle kopiert wird , können Sie die Leerzeichen dort sehen. Wenn Sie Ihren Repo-Pfad nach unten ändern, sollte dies funktionierenc://projects/myrestproject
quelle
Ich hatte das gleiche Problem. Sie können auch überprüfen, in welche Richtung der Schrägstrich zeigt. Bei mir hat es funktioniert, Backslash anstelle von Forward Slash zu verwenden. Beispiel
Anstatt:
quelle
Ich hatte einen Post-Build-Befehl, der einwandfrei funktionierte, bevor ich ein Update für VS 2017 durchführte. Es stellte sich heraus, dass die SDK-Tools aktualisiert wurden und sich unter einem neuen Pfad befanden, sodass das Tool, mit dem ich meine Assemblys signierte, nicht gefunden werden konnte.
Dies änderte sich von diesem ....
Zu diesem ...
Sehr subtile, aber bahnbrechende Änderung. Überprüfen Sie daher nach einem Update Ihre Pfade, wenn dieser Fehler auftritt.
quelle
Ein andere Sache zu achten ist doppelt Schrägstriche, da
xcopy
sie nicht in dem Eingangspfad Parameter tolerieren (aber es hat sie in dem Ausgabepfad tolerieren ...).quelle
Wenn sich eine andere Lösung im Debug-Modus befindet, stoppen Sie zuerst alle und starten Sie anschließend das Visual Studio neu. Es hat bei mir funktioniert.
quelle
Dies kann auch auftreten, wenn der Zielordner von anderen Prozessen verwendet wird . Schließen Sie alle Programme, die möglicherweise den Zielordner verwenden, und versuchen Sie es.
Sie können den Ressourcenmonitor (Windows-Tool) verwenden, um die Prozesse zu überprüfen, die Ihren Zielordner verwenden.
Das hat bei mir funktioniert!.
quelle