Question Post Build terminé avec le code 1


J'ai un projet avec un événement post construction:

copy $(ProjectDir)DbVerse\Lunaverse.DbVerse.*.exe  $(TargetDir)

Cela fonctionne bien à chaque fois sur ma machine. J'ai un nouveau développeur qui obtient toujours l'erreur "sorti avec le code 1". Je l'ai fait exécuter la même commande dans une invite DOS, et ça a bien fonctionné. Qu'est-ce qui peut causer cela? Y a-t-il un moyen d'obtenir l'erreur réelle?

Nous utilisons tous les deux Visual Studio 2008.


95
2017-11-21 20:41


origine


Réponses:


Elle avait un espace dans l'un des noms de dossier sur son chemin et pas de guillemets.


102
2017-11-21 21:52



Celui avec les "Pings" m'a aidé ... mais peut être expliqué un peu mieux ...

Pour moi, la solution était de changer:

copy $(TargetDir)$(TargetName).* $(SolutionDir)bin

pour ça:

copy "$(TargetDir)$(TargetName).*" "$(SolutionDir)bin"

J'espère que ça marche pour toi. :-)


53
2018-02-18 19:51



Ma raison pour le code 1 était que le dossier cible était en lecture seule. J'espère que cela aide quelqu'un! J'ai eu un événement post-build pour faire une copie d'un répertoire vers un autre et la destination était en lecture seule. Je viens donc de décocher l'attribut en lecture seule du répertoire et de tous ses sous-répertoires! Assurez-vous simplement que c'est un répertoire qui est sûr de le faire!


42
2017-12-27 22:01



Je l'ai ajouté pour les futurs visiteurs car c'est une question assez active.

ROBOCOPY se termine par des "codes de réussite" inférieurs à 8. Voir: http://support.microsoft.com/kb/954404

Cela signifie que:

robocopy exit code 0 = no files copied
robocopy exit code 1 = files copied
When the result is 1, this becomes an error exit code in visual studio.

J'ai donc résolu ce problème facilement en ajoutant ceci au bas du fichier de commandes

exit 0

Suggère que gérer les erreurs ROBOCOPY de cette façon

rem each robocopy statement and then underneath have the error check.
if %ERRORLEVEL% GEQ 8 goto failed

rem end of batch file
GOTO success

:failed
rem do not pause as it will pause msbuild.
exit 1

:success
exit 0    

La confusion est établie lorsque aucun fichier n'est copié = aucune erreur dans VS. Ensuite, quand il y a des changements, les fichiers sont copiés, les erreurs VS, mais tout ce que le développeur voulait faire était fait.

Conseil supplémentaire: N'utilisez pas de pause dans le script, car cela deviendrait une pause indéfinie dans la construction du VS. tout en développant le script, utilisez quelque chose comme timeout 10. Vous remarquerez cela et commenterez-le plutôt que d'avoir une construction suspendue.


36
2018-05-04 01:52



Obtenir moniteur de processus de SysInternals  configurez-le pour surveiller le Lunaverse.DbVerse (dans le champ Path) et examinez le résultat de l'opération. Il devrait être évident de là ce qui a mal tourné


11
2017-11-21 20:50



J'ai dû exécuter VS en tant qu'administrateur pour que ma copie post-build sur un système d'exploitation protégé ".. \ Common7 \ IDE \ PrivateAssemblies" fonctionne.


7
2018-04-30 21:31



Pour ceux qui utilisent 'copie'commande dans Construire des événements (Ligne de commande d'événement de pré-construction ou et Ligne de commande d'événement post-construction) de Projet -> Propriétés: toi 'copieLes paramètres de commande devraient ressembler à ceci: copy "source of files" "destination for files". N'oubliez pas d'utiliser des guillemets (pour éviter les problèmes d'espaces dans les chaînes d'adresse).


5
2017-12-27 14:13