Je ne suis pas très familier avec les événements post-build, donc je suis un peu confus quant à ce qui ne va pas avec mon programme. Lors de la compilation dans Visual Studio 2010, j'obtiens ce qui suit:
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.
Le programme semble fonctionner correctement, malgré cette erreur, mais je ne veux pas simplement ignorer ce problème et espérer que rien de mauvais ne se produira. Étrangement, cette ligne a commencé comme une seule commande (la première xcopy) mais au fur et à mesure que je continuais à compiler le projet (en résolvant d'autres problèmes, principalement des références), le message d'erreur était de plus en plus large. Une idée de ce qui pourrait se passer?
Edit: Voici les événements postbuild qui semblent échouer -
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
Raven Dreamer
la source
la source
Administrator privileges
. La copie vers des emplacements spécifiques nécessite des droits d'administrateur.Réponses:
Le code de sortie Xcopy 4 signifie "Une erreur d'initialisation s'est produite. Il n'y a pas assez de mémoire ou d'espace disque, ou vous avez entré un nom de lecteur non valide ou une syntaxe non valide sur la ligne de commande. "
Il semble que Visual Studio fournit des arguments non valides à xcopy. Vérifiez votre commande d'événement post-construction via
Project > Right Click > Properties > Build Events > Post Build Event
.Notez que si les
$(ProjectDir)
termes de macro ou similaires ont des espaces dans les chemins résultants lorsqu'ils sont développés, ils devront être placés entre guillemets. Par exemple:la source
"command args"
).$(ProjectDir)
(et / ou similaire) a des espaces dans le chemin développé, il devra être entouré de guillemets. Par exemple:xcopy "$(ProjectDir)Library\dsoframer.ocx" "$(TargetDir)" /Y /E /D1
Basculez l'onglet de surveillance sur la "sortie" et recherchez la commande xcopy. Parfois, vous trouverez ici un message supplémentaire (la sortie xcopy réelle) qui pourrait vous aider à résoudre le problème. Si vous ne voyez pas l'onglet de sortie, utilisez le menu Affichage-Sortie pour l'afficher.
la source
En plus de la réponse acceptée, l'erreur peut également se produire lorsque le dossier de destination est en lecture seule (courant lors de l'utilisation de TFS)
la source
Si le fichier source n'est pas trouvé, xcopy renvoie également le code d'erreur 4 .
la source
$(TargetDir)
ce qui se termine parRelease\
. Utiliser$(ProjectDir)\bin\Release
sans le suivi a\\
fonctionné pour moiJ'ai reçu l' erreur « sorti avec le code 4 » lorsque la commande xcopy a tenté d'écraser un fichier en lecture seule. J'ai réussi à résoudre ce problème en ajoutant / R à la commande xcopy. Le / R indique que les fichiers en lecture seule doivent être écrasés
ancienne commande:
nouvelle commande
la source
Comme d'autres réponses l'expliquent, le code de sortie 4 peut avoir de nombreuses causes.
J'ai remarqué un cas où les noms de chemin résultants dépassaient la longueur maximale autorisée (comme ici ).
J'ai remplacé xcopy par robocopy pour l'événement post build affecté; robocopy semble gérer les chemins légèrement différents et a pu terminer la tâche de copie que xcopy n'a pas pu gérer.
la source
Cela signifie :
Donc, fondamentalement, cela pourrait être à peu près n'importe quoi haha ... essayez d'exécuter la commande une par une à partir de l'invite de commande pour déterminer quelle partie de quelle commande vous pose problème.
la source
J'ai compris ça avec le message
lors de la copie sur un partage réseau sans spécifier le nom du lecteur, par exemple
où
était attendu
la source
J'ai rencontré ce problème, alors j'ai exécuté la commande xcopy à partir de la ligne de commande et elle a dit:
C'était en fait Visual Studio qui tenait quelque chose. Je viens de redémarrer Visual Studio et cela a fonctionné.
la source
Dans mon cas, le problème était dû à un ordre de construction incorrect. Un projet avait une commande xcopy sur les événements post-build pour copier les fichiers du dossier bin vers un autre dossier. Mais en raison de dépendances incorrectes, de nouveaux fichiers étaient créés dans le dossier bin pendant que xcopy était en cours.
Dans VS, faites un clic droit sur le projet dans lequel vous avez des événements post-build. Accédez à Build Dependencies> Project Dependencies et assurez-vous que c'est correct. Vérifiez également l'ordre de construction du projet (onglet suivant des dépendances).
la source
Cette erreur est due au fait qu'il existe des espaces blancs où votre dépôt est copié. Par exemple, mon projet est copié à l'emplacement ci-dessous,
c://projects/My rest project
vous pouvez voir les espaces blancs là-bas, si vous modifiez votre chemin de dépôt en dessous, cela devrait fonctionnerc://projects/myrestproject
la source
J'ai eu le même problème. Vous pouvez également vérifier dans quelle direction la barre oblique pointe. Pour moi, cela fonctionnait d'utiliser une barre oblique inverse, au lieu d'une barre oblique. Exemple
Au lieu de:
la source
J'avais une commande post build qui fonctionnait très bien avant de faire une mise à jour sur VS 2017. Il s'est avéré que les outils du SDK étaient mis à jour et étaient sous un nouveau chemin, donc il ne pouvait pas trouver l'outil que j'utilisais pour signer mes assemblages.
Cela a changé depuis ...
Pour ça...
Changement très subtil mais cassant, alors vérifiez vos chemins après une mise à jour si vous voyez cette erreur.
la source
Une autre chose à surveiller est backslashes double, puisque
xcopy
ne les tolère pas dans le paramètre de chemin d'entrée (mais il ne les supporte dans la voie de sortie ...).la source
Si une autre solution est en mode débogage, arrêtez-les d'abord toutes et ensuite redémarrez le studio visuel. Cela a fonctionné pour moi.
la source
Cela peut également arriver si le dossier cible est utilisé par d'autres processus . Fermez tous les programmes susceptibles d'utiliser le dossier cible et essayez.
Vous pouvez utiliser le moniteur de ressources (outil Windows) pour vérifier les processus qui utilisent votre dossier cible.
Cela a fonctionné pour moi !.
la source